Tôi đang triển khai FromIterator
cho [MyStruct;4]
trong đó MyStruct
là một cấu trúc Sao chép nhỏ. Triển khai hiện tại của tôi làCách tốt nhất để điền một lát từ một trình lặp trong Rust là gì?
fn from_iter<I: IntoIterator<Item=MyStruct>>(iter: I) -> Self {
let mut retval = [Default::default();4];
for (ret, src) in retval.iter_mut().zip(iter) {
*ret = src;
}
retval
}
Điều này chỉ hoạt động tốt, tuy nhiên tôi không chắc chắn rằng vòng lặp for
có thành ngữ như thường lệ không. Có lẽ một phương pháp như Slice::fill(iter)
có thể thực hiện điều này một cách rõ ràng hơn (và có lẽ hiệu quả hơn) không?
Có thể bạn chỉ cần sử dụng đồng bằng, cũ [bản đồ] (https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map)? – hellow