3 #![allow(unused_imports)]
4 #![allow(unused_must_use)]
5 // pretty-expanded FIXME #23616
8 use std::marker::PhantomData;
14 trait Encodable<S: Encoder> {
15 fn encode(&self, s: &mut S) -> Result<(), S::Error>;
18 impl<S: Encoder> Encodable<S> for i32 {
19 fn encode(&self, _s: &mut S) -> Result<(), S::Error> {
24 struct JsonEncoder<'a>(PhantomData<&'a mut ()>);
26 impl Encoder for JsonEncoder<'_> {
30 fn encode_json<T: for<'r> Encodable<JsonEncoder<'r>>>(
32 ) -> Result<String, ()> {
33 let s = String::new();
35 let mut encoder = JsonEncoder(PhantomData);
36 object.encode(&mut encoder)?;
41 struct Foo<T: for<'a> Encodable<JsonEncoder<'a>>> {
45 impl<T: for<'a> Encodable<JsonEncoder<'a>>> Drop for Foo<T> {
52 let _ = Foo { v: 10 };