1 // check-pass 2 3 pub trait Deserialize<'de>: Sized {} 4 pub trait DeserializeOwned: for<'de> Deserialize<'de> {} 5 6 pub trait Extensible { 7 type Config; 8 } 9 10 // The `C` here generates a `C: Sized` candidate 11 pub trait Installer<C> { init<B: Extensible<Config = C>>(&mut self) -> () where B::Config: DeserializeOwned,12 fn init<B: Extensible<Config = C>>(&mut self) -> () 13 where 14 // This clause generates a `for<'de> C: Sized` candidate 15 B::Config: DeserializeOwned, 16 { 17 } 18 } 19 main()20fn main() {} 21