blob: 88f829ea25a5e9de3fcf359e78e4a40112e48dfd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// check-pass
#![feature(associated_type_defaults)]
trait Foo {
type A<'a> where Self: 'a;
type B<'a, 'b> where 'a: 'b;
type C where Self: Clone;
}
#[derive(Clone)]
struct Fooy;
impl Foo for Fooy {
type A<'a> = (&'a ());
type B<'a: 'b, 'b> = (&'a(), &'b ());
type C = String;
}
#[derive(Clone)]
struct Fooer<T>(T);
impl<T> Foo for Fooer<T> {
type A<'x> = (&'x ()) where T: 'x;
type B<'u, 'v> = (&'v &'u ()) where 'u: 'v;
type C = String where Self: Clone + ToOwned;
}
fn main() {}
|