// run-pass use { std::{ rc::Rc, sync::Arc, }, }; #[derive(Default)] struct Ty; trait Trait { fn receive_trait(self: &Arc>>) -> u32; } const TRAIT_MAGIC: u32 = 42; const INHERENT_MAGIC: u32 = 1995; impl Trait for Ty { fn receive_trait(self: &Arc>>) -> u32 { TRAIT_MAGIC } } impl Ty { fn receive_inherent(self: &Arc>>) -> u32 { INHERENT_MAGIC } } fn main() { let ty = >>>::default(); assert_eq!(TRAIT_MAGIC, ty.receive_trait()); assert_eq!(INHERENT_MAGIC, ty.receive_inherent()); }