foreigner_class!(class Foo { self_type Foo; private constructor = empty -> Box>; }); foreigner_class!(class Boo { self_type Boo; private constructor Boo::default() -> Boo; method Boo::f(&mut self) -> Result>, String>; method Boo::f2(&mut self) -> Option>>; });