#[test] fn tuple_destructure() { mod my_module { use inherent_pub::inherent_pub; pub trait Foo { fn foo(self, a: (i32, i32)) -> i32; } pub struct Bar; #[inherent_pub] impl Foo for Bar { pub fn foo(self, (a, b): (i32, i32)) -> i32 { a + b } } } assert!(my_module::Bar.foo((40, 2)) == 42); } #[test] fn tuple_struct_destructure() { mod my_module { use inherent_pub::inherent_pub; pub struct Pair(pub i32, pub i32); pub trait Foo { fn foo(self, a: Pair) -> i32; } pub struct Bar; #[inherent_pub] impl Foo for Bar { pub fn foo(self, Pair(a, b): Pair) -> i32 { a + b } } } assert!(my_module::Bar.foo(my_module::Pair(40, 2)) == 42); } #[test] fn struct_destructure() { mod my_module { use inherent_pub::inherent_pub; pub struct Pair { pub a: i32, pub b: i32, } pub trait Foo { fn foo(self, a: Pair) -> i32; } pub struct Bar; #[inherent_pub] impl Foo for Bar { pub fn foo(self, Pair { a, b: c }: Pair) -> i32 { a + c } } } assert!(my_module::Bar.foo(my_module::Pair{ a: 40, b: 2}) == 42); }