Allowing this code:
struct Id(u32);
fn main() {
let id = Id(5);
let mut v = vec![id];
println!("{}", id.0);
}
would break ‘zero cost abstractions’.