Block you have various options.
Clone (sry remembered this wrong) you could simply write:
let zs = [Zone::default(); 4].to_vec();
But I think thats not the case. In order to remove one call you could use a
let zs: Vec<_> = (0..4).map(|_| Zone::default()).collect();
Block creation you can do what clippy recommends:
let bs: Vec<Block> = zs.into_iter().map(Zone::into).collect();
For the rest I see no sensible reason to remove.
One note: Often it is more ergonomic to implement
From rather than
Into. First because
From automaticly implements
Into and second then you could write:
bs: Vec<_> = zs.into_iter().map(Block::from).collect();
But thats just a matter of personal taste.