]> git.lizzy.rs Git - rust.git/blob - src/test/ui/traits/pointee-tail-is-generic.rs
:arrow_up: rust-analyzer
[rust.git] / src / test / ui / traits / pointee-tail-is-generic.rs
1 // check-pass
2 // edition:2018
3
4 #![feature(ptr_metadata)]
5 #![feature(type_alias_impl_trait)]
6
7 type Opaque = impl std::future::Future;
8
9 fn opaque() -> Opaque {
10     async {}
11 }
12
13 fn a<T>() {
14     // type parameter T is known to be sized
15     is_thin::<T>();
16     // tail of ADT (which is a type param) is known to be sized
17     is_thin::<std::cell::Cell<T>>();
18     // opaque type is known to be sized
19     is_thin::<Opaque>();
20 }
21
22 fn a2<T: Iterator>() {
23     // associated type is known to be sized
24     is_thin::<T::Item>();
25 }
26
27 fn is_thin<T: std::ptr::Pointee<Metadata = ()>>() {}
28
29 fn main() {}