//@ known-bug: #92470 fn main() { encode(&mut EncoderImpl); } pub trait Encoder { type W; fn writer(&self) -> Self::W; } fn encode(mut encoder: E) { encoder.writer(); encode(&mut encoder); } struct EncoderImpl; impl Encoder for EncoderImpl { type W = (); fn writer(&self) {} } impl<'a, T: Encoder> Encoder for &'a mut T { type W = T::W; fn writer(&self) -> Self::W { panic!() } }