// run-pass #![allow(dead_code)] #![allow(unused_variables)] // Test what happens when a HR obligation is applied to an impl with // "outlives" bounds. Currently we're pretty conservative here; this // will probably improve in time. trait Foo { fn foo(&self, x: X) { } } fn want_foo() where T : for<'a> Foo<&'a isize> { } // Expressed as a where clause struct SomeStruct { x: X } impl<'a,X> Foo<&'a isize> for SomeStruct where X : 'a { } fn one() { want_foo::>(); } // Expressed as shorthand struct AnotherStruct { x: X } impl<'a,X:'a> Foo<&'a isize> for AnotherStruct { } fn two() { want_foo::>(); } fn main() { }