//@ build-pass | |
trait Trait { type Item; } | |
impl<'a, X> Trait for &'a Vec<X> { | |
type Item = &'a X; | |
} | |
impl<X> Trait for Box<dyn Trait<Item = X>> { | |
type Item = X; | |
} | |
fn make_dyn_trait(_: &()) -> Box<dyn Trait<Item = &()>> { | |
todo!() | |
} | |
fn diff<'a, M, N, S>(_: N, _: S) | |
where | |
M: 'a, | |
N: Trait<Item = &'a M>, | |
S: Trait<Item = &'a M>, | |
{ | |
todo!() | |
} | |
fn may_panic<X>(_: X) { } | |
fn main() { | |
let dyn_trait = make_dyn_trait(&()); | |
let storage = vec![()]; | |
may_panic(()); | |
let storage_ref = &storage; | |
diff(dyn_trait, storage_ref); | |
} |