41 lines
755 B
Rust
41 lines
755 B
Rust
// compile-flags:-Zverbose
|
|
|
|
#![allow(warnings)]
|
|
|
|
trait Anything { }
|
|
|
|
impl<T> Anything for T { }
|
|
|
|
fn no_region<'a, T>(mut x: T) -> Box<dyn Anything + 'a>
|
|
where
|
|
T: Iterator,
|
|
{
|
|
Box::new(x.next())
|
|
//~^ ERROR the associated type `<T as Iterator>::Item` may not live long enough
|
|
}
|
|
|
|
fn correct_region<'a, T>(mut x: T) -> Box<dyn Anything + 'a>
|
|
where
|
|
T: 'a + Iterator,
|
|
{
|
|
Box::new(x.next())
|
|
}
|
|
|
|
fn wrong_region<'a, 'b, T>(mut x: T) -> Box<dyn Anything + 'a>
|
|
where
|
|
T: 'b + Iterator,
|
|
{
|
|
Box::new(x.next())
|
|
//~^ ERROR the associated type `<T as Iterator>::Item` may not live long enough
|
|
}
|
|
|
|
fn outlives_region<'a, 'b, T>(mut x: T) -> Box<dyn Anything + 'a>
|
|
where
|
|
T: 'b + Iterator,
|
|
'b: 'a,
|
|
{
|
|
Box::new(x.next())
|
|
}
|
|
|
|
fn main() {}
|