mirror of https://github.com/rust-lang/rust
32 lines
448 B
Rust
32 lines
448 B
Rust
//@ 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!()
|
|
}
|
|
}
|