// Test that we can quantify lifetimes outside a constraint (i.e., including | |
// the self type) in a where clause. Specifically, test that implementing for a | |
// specific lifetime is not enough to satisfy the `for<'a> ...` constraint, which | |
// should require *all* lifetimes. | |
static X: &'static u32 = &42; | |
trait Bar { | |
fn bar(&self); | |
} | |
impl Bar for &'static u32 { | |
fn bar(&self) {} | |
} | |
fn foo<T>(x: &T) | |
where | |
for<'a> &'a T: Bar, | |
{ | |
} | |
fn main() { | |
foo(&X); //~ ERROR implementation of `Bar` is not general enough | |
} |