Bildiğim kadarıyla, böyle bir kısayol yoktur. Yine de birkaç seçeneğin var.
doğrudan sözdizimi
bir dizi Copy
türleri ile çalışır başlatmak için doğrudan sözdizimi (tamsayı Copy
gösterilmiştir):
let array = [0; 1024];
tüm 0s 1024 elemanlarının, bir dizi başlatır. Buna dayanarak
, sonradan bir dizi değiştirebilir:
let array = {
let mut array = [0; 1024];
array[0] = 7;
array[1] = 8;
array
};
Not kodu daha küçük bir bölümüne değişebilirlik izole etmek için bir blok ifade kullanarak hile; Bunu aşağıda tekrar kullanacağız.
yineleyici sözdizimi
Orada da bir yineleyici bir diziyi başlatmak için destekleyen edilir:
let array = {
let mut array = [0; 1024];
for (i, element) in array.iter_mut().enumerate().take(2) {
*element = (i + 7);
}
array
};
Ve hatta (isteğe bağlı) kullanarak, başlatılmamış durumundan başlayabilir Bir unsafe
blok:
let array = unsafe {
// Create an uninitialized array.
let mut array: [i32; 10] = mem::uninitialized();
let nonzero = 2;
for (i, element) in array.iter_mut().enumerate().take(nonzero) {
// Overwrite `element` without running the destructor of the old value.
ptr::write(element, i + 7)
}
for element in array.iter_mut().skip(nonzero) {
// Overwrite `element` without running the destructor of the old value.
ptr::write(element, 0)
}
array
};
kısa yineleyici sözdizimi
clone_from_slice
dayanan kısa formu vardır, bununla birlikte şu anda kararsız. İşte
#![feature(clone_from_slice)]
let array = {
let mut array = [0; 32];
// Override beginning of array
array.clone_from_slice(&[7, 8]);
array
};