diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/impl-trait/in-trait/opaque-in-impl.rs | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs b/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs index a777cbcd529..2e06629699a 100644 --- a/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs +++ b/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs @@ -3,18 +3,46 @@ #![feature(return_position_impl_trait_in_trait)] #![allow(incomplete_features)] -use std::fmt::Display; +use std::fmt::Debug; trait Foo { - fn bar(&self) -> impl Display; + fn foo(&self) -> impl Debug; } impl Foo for () { - fn bar(&self) -> impl Display { + fn foo(&self) -> impl Debug { "Hello, world" } } +impl<T: Default + Debug> Foo for std::marker::PhantomData<T> { + fn foo(&self) -> impl Debug { + T::default() + } +} + +trait Bar { + fn bar<T>(&self) -> impl Debug; +} + +impl Bar for () { + fn bar<T>(&self) -> impl Debug { + format!("Hello with generic {}", std::any::type_name::<T>()) + } +} + +trait Baz { + fn baz(&self) -> impl Debug + '_; +} + +impl Baz for String { + fn baz(&self) -> impl Debug + '_ { + (self,) + } +} + fn main() { - println!("{}", ().bar()); + println!("{:?}", ().foo()); + println!("{:?}", ().bar::<u64>()); + println!("{:?}", "hi".to_string().baz()); } |
