Suppose T implements Default but not Clone. Then, we can not do vec![ T::default(); N ]
instead, we have to do:
let mut ans = Vec::with_capacity(N);
for _ in 0 .. N { ans.push(T::default()); }
Is there a builtin for this ?
Suppose T implements Default but not Clone. Then, we can not do vec![ T::default(); N ]
instead, we have to do:
let mut ans = Vec::with_capacity(N);
for _ in 0 .. N { ans.push(T::default()); }
Is there a builtin for this ?
You could use resize_with
:
pub fn create_vec<T: Default>(size: usize) -> Vec<T> {
let mut v = vec![];
v.resize_with(size, T::default);
v
}
Or (0..size).map(|_| T::default()).collect()
Or even more simply (point-free): iter::repeat_with(T::default).take(size).collect()