数组、动态数组和字符串

数组和动态数组

数组 array

Rust 使用数组存储相同类型的数据集。 [T; N]表示一个拥有 T 类型,N 个元素的数组。数组的大小是固定。

例子:

fn main() {
    let mut array: [i32; 3] = [0; 3];

    array[1] = 1;
    array[2] = 2;

    assert_eq!([1, 2], &array[1..]);

    // This loop prints: 0 1 2
    for x in &array {
        println!("{} ", x);
    }
}

动态数组 Vec

动态数组是一种基于堆内存申请的连续动态数据类型,拥有 O(1) 时间复杂度的索引、压入(push)、弹出(pop)。

例子:

字符串

Rust 里面有两种字符串类型。Stringstr

&str

str 类型基本上不怎么使用,通常使用 &str 类型,它其实是 [u8] 类型的切片形式 &[u8]。这是一种固定大小的字符串类型。 常见的的字符串字面值就是 &'static str 类型。这是一种带有 'static 生命周期的 &str 类型。

例子:

String

String 是一个带有的 vec:Vec<u8> 成员的结构体,你可以理解为 str 类型的动态形式。 它们的关系相当于 [T]Vec<T> 的关系。 显然 String 类型也有压入和弹出。

例子:

Last updated

Was this helpful?