Thank you for the idea. I made slightly different implementation based on it: playground The usage is as follows: // simple types impl MyMainTrait for i32 { type BlanketType = SimpleType; } impl MyMainTrait for &str { type BlanketType = SimpleType; } // struct types struct Foo { field: i32, } impl MyMainTrait for Foo { type BlanketType = StructType; } impl StructTrait for Foo { const FIELDS: &'static [&'static str] = &["field"]; fn do_somethin...