//@ check-pass | |
trait Foo { | |
type Assoc<'a> | |
where | |
Self: 'a; | |
fn assoc(&mut self) -> Self::Assoc<'_>; | |
} | |
fn overlapping_mut<T>(mut t: T) | |
where | |
T: Foo, | |
for<'a> T::Assoc<'a>: 'static, | |
{ | |
let a = t.assoc(); | |
let b = t.assoc(); | |
} | |
fn live_past_borrow<T>(mut t: T) | |
where | |
T: Foo, | |
for<'a> T::Assoc<'a>: 'static { | |
let x = t.assoc(); | |
drop(t); | |
drop(x); | |
} | |
fn main() {} |