Question about the efficiency of vec![] on num_complex::Complex

I wonder if there could be a marker trait that indicates that it is safe to use all zeroes for the size of the type as default values. Then, vec! could use the fact that the type impls that trait to optimize and use __rust_alloc_zeroed? For example, something along the lines of:

unsafe trait Zeroable;
unsafe impl trait Zeroable for Foo;
let v = vec::<Foo>::new( 100000 ); // would allocate a vector of Foo's 1000,000 in length, all zeroed using __rust_alloc_zeroed and so would be basically instantaneous

This trait could be auto-derived based on the "zeroableness" of components of the struct (similar to how send and sync are auto-derived). A type could also be declared !Zeroable to override the auto-derive. Also could allow manually/explicitly implementing Zeroable impl if it didn't auto-derive but was safe to be zero-able.

EDIT: So apparently, this is already a thing, it just hasn't stabilized yet: Vec! lack of optimization for "zeroed" types - #3 by sfackler - libs - Rust Internals