Tôi cần phải khởi tạo từng phần tử của mảng thành biểu thức không liên tục. Tôi có thể làm điều đó mà không cần phải khởi tạo từng phần tử của mảng thành một số biểu thức vô nghĩa? Dưới đây là một ví dụ về những gì tôi muốn để có thể làm:Có cách nào để không phải khởi tạo mảng hai lần không?
fn foo(xs: &[i32; 1000]) {
let mut ys: [i32; 1000];
for (x, y) in xs.iter().zip(ys.iter_mut()) {
*y = *x/3;
}
// ...
}
Mã này cung cấp cho các lỗi thời gian biên dịch:
error[E0381]: use of possibly uninitialized variable: `ys`
--> src/main.rs:5:37
|
5 | for (x, y) in xs.iter().zip(ys.iter_mut()) {
| ^^ use of possibly uninitialized `ys`
Để khắc phục vấn đề tôi cần phải thay đổi dòng đầu tiên của chức năng để khởi tạo các yếu tố của ys
với một số giá trị giả như vậy:
let mut ys: [i32; 1000] = [0; 1000];
có cách nào để bỏ qua mà thêm khởi? Gói tất cả mọi thứ trong một khối unsafe
dường như không tạo ra bất kỳ sự khác biệt nào.