//@ known-bug: #92470 | |
fn main() { | |
encode(&mut EncoderImpl); | |
} | |
pub trait Encoder { | |
type W; | |
fn writer(&self) -> Self::W; | |
} | |
fn encode<E: Encoder>(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!() | |
} | |
} |