extern mod std; trait Serializer { } trait Serializable { fn serialize(s: S); } impl int: Serializable { fn serialize(_s: S) { } } struct F { a: A } impl F: Serializable { fn serialize(s: S) { self.a.serialize(s); } } impl io::Writer: Serializer { } fn main() { do io::with_str_writer |wr| { let foo = F { a: 1 }; foo.serialize(wr); let bar = F { a: F {a: 1 } }; bar.serialize(wr); }; }