This would make `deriving` significantly more flexible, e.g. for #3740: ``` rust #[deriving(Encodable(encoder="RustcEncoder"))] struct Foo { ... } ``` And for specifying an order of fields to sort by: ``` rust #[deriving(Ord(bar, baz))] struct Foo { baz: uint, bar: uint } ```