// check-pass #![feature(lint_reasons)] #![allow(incomplete_features)] use std::fmt::Display; pub trait Foo { fn bar(&self) -> impl Display; } impl Foo for i32 { #[expect(refining_impl_trait)] fn bar(&self) -> i32 { *self } } impl Foo for &'static str { #[expect(refining_impl_trait)] fn bar(&self) -> &'static str { *self } } pub struct Yay; impl Foo for Yay { #[expect(refining_impl_trait)] fn bar(&self) -> String { String::from(":^)") } } fn foo_generically(t: T) { println!("{}", t.bar()); } fn main() { println!("{}", "Hello, world.".bar()); println!("The answer is {}!", 42.bar()); foo_generically(Yay); }