It may be that we want to have reflection behind a type bound like Reflect, so reasoning about generics is possible from the type bounds. Removing most reflection support is the subject of an RFC: rust-lang/rfcs#379 and changing type_id has been part of that discussion.