foreigner_class!(class Foo { self_type Foo; constructor Foo::new(_: i32, _: &str) -> Foo; method Foo::f(&self, _: i32, _: i32) -> i32; alias calcF; }); foreigner_class!(class Boo { self_type Moo<'a>; constructor Moo::new(_: &str) -> Moo<'a>; method Moo::f(&self, _: &str) -> String; }); foreigner_class!(class TestPassObjectsAsParams { self_type TestPassObjectsAsParams; constructor TestPassObjectsAsParams::default() -> TestPassObjectsAsParams; method TestPassObjectsAsParams::f1(&self, _: &Foo); method TestPassObjectsAsParams::f2(&self, _: Foo); method TestPassObjectsAsParams::f3(&self, _: &mut Foo); method TestPassObjectsAsParams::f3_a(&self, _: &mut Moo<'a>); static_method TestPassObjectsAsParams::f4(_: &Foo); static_method TestPassObjectsAsParams::f5(_: Foo); });