// check-pass use std::ops::Deref; trait MyTrait { fn do_something(&self); fn as_str(&self) -> &str; } impl Deref for dyn MyTrait { type Target = str; fn deref(&self) -> &Self::Target { self.as_str() } } fn trait_object_does_something(t: &dyn MyTrait) { t.do_something() } fn main() {}