use std::any::Any; #[derive(Debug)] struct Engine { x: i32 } trait FnRegisterTest { fn register(self, engine: &mut Engine, name: &str); } implB> FnRegisterTest for T { fn register(self, engine: &mut Engine, name: &str) { engine.x += 1; } } fn id(x: i32) -> i32 { x } fn main() { let mut engine = Engine { x: 0 }; id.register(&mut engine, "foo"); println!("Engine: {:?}", engine); }