]> git.lizzy.rs Git - rust.git/blob - src/test/ui/impl-trait/in-trait/opaque-in-impl.rs
Rollup merge of #105405 - sunfishcode:sunfishcode/export-dynamic, r=TaKO8Ki
[rust.git] / src / test / ui / impl-trait / in-trait / opaque-in-impl.rs
1 // check-pass
2
3 #![feature(return_position_impl_trait_in_trait)]
4 #![allow(incomplete_features)]
5
6 use std::fmt::Debug;
7
8 trait Foo {
9     fn foo(&self) -> impl Debug;
10 }
11
12 impl Foo for () {
13     fn foo(&self) -> impl Debug {
14         "Hello, world"
15     }
16 }
17
18 impl<T: Default + Debug> Foo for std::marker::PhantomData<T> {
19     fn foo(&self) -> impl Debug {
20         T::default()
21     }
22 }
23
24 trait Bar {
25     fn bar<T>(&self) -> impl Debug;
26 }
27
28 impl Bar for () {
29     fn bar<T>(&self) -> impl Debug {
30         format!("Hello with generic {}", std::any::type_name::<T>())
31     }
32 }
33
34 trait Baz {
35     fn baz(&self) -> impl Debug + '_;
36 }
37
38 impl Baz for String {
39     fn baz(&self) -> impl Debug + '_ {
40         (self,)
41     }
42 }
43
44 fn main() {
45     println!("{:?}", ().foo());
46     println!("{:?}", ().bar::<u64>());
47     println!("{:?}", "hi".to_string().baz());
48 }