// check-pass #![feature(return_position_impl_trait_in_trait)] #![allow(incomplete_features)] use std::fmt::Display; use std::ops::Deref; trait Foo { fn bar(self) -> impl Deref; } struct A; impl Foo for A { fn bar(self) -> &'static str { "Hello, world" } } struct B; impl Foo for B { fn bar(self) -> Box { Box::new(42) } } fn main() { println!("Message for you: {:?}", &*A.bar()); println!("Another for you: {:?}", &*B.bar()); }