数组
数组是堆栈分配的,静态大小的单个对象列表。
通常通过在方括号之间包含给定类型的元素列表来创建数组。数组的类型用特殊语法表示:[T; N]
其中 T
是其元素的类型,N
是它们的计数,两者都必须在编译时知道。
例如,[4u64, 5, 6]
是 [u64; 3]
类型的 3 元素阵列。注:5
和 6
推断为 u64
型。
例
fn main() {
// Arrays have a fixed size.
// All elements are of the same type.
let array = [1, 2, 3, 4, 5];
// Create an array of 20 elements where all elements are the same.
// The size should be a compile-time constant.
let ones = [1; 20];
// Get the length of an array.
println!("Length of ones: {}", ones.len());
// Access an element of an array.
// Indexing starts at 0.
println!("Second element of array: {}", array[1]);
// Run-time bounds-check.
// This panics with 'index out of bounds: the len is 5 but the index is 5'.
println!("Non existant element of array: {}", array[5]);
}
限制
稳定 Rust 中不支持数组(或切片)上的模式匹配(请参阅 #23121 和切片模式 )。
Rust 不支持类型级数字的通用性(参见 RFC#1657 )。因此,不可能简单地为所有数组(所有大小)实现特征。因此,标准特征仅适用于阵列数量有限的阵列(最后检查,最多 32 个)。支持具有更多元素的数组,但不实现标准特征(请参阅文档 )。
这些限制有望在未来取消。