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