Поиск…


Массивы

Массив - это список объектов с одним стеком, заданный стеками.

Массивы обычно создаются путем включения списка элементов определенного типа между квадратными скобками. Тип массива обозначается специальным синтаксисом: [T; N] где T - тип его элементов, а N их счет, оба из которых должны быть известны во время компиляции.

Например, [4u64, 5, 6] представляет собой 3-элементный массив типа [u64; 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 и шаблоны срезов ).

Ржавчина не поддерживает типичность цифр типа (см. RFC # 1657 ). Поэтому невозможно просто реализовать признак для всех массивов (всех размеров). В результате стандартные черты реализуются только для массивов с ограниченным количеством элементов (последний проверен, до 32 включительно). Массивы с большим количеством элементов поддерживаются, но не реализуют стандартные черты (см. Документы ).

Эти ограничения, мы надеемся, будут сняты в будущем.

векторы

Вектор - это, по существу, указатель на список, выделенный динамическим размером объектов одного типа.


пример

fn main() {
    // Create a mutable empty vector
    let mut vector = Vec::new();

    vector.push(20);
    vector.insert(0, 10); // insert at the beginning

    println!("Second element of vector: {}", vector[1]); // 20

    // Create a vector using the `vec!` macro
    let till_five = vec![1, 2, 3, 4, 5];

    // Create a vector of 20 elements where all elements are the same.
    let ones = vec![1; 20];

    // Get the length of a vector.
    println!("Length of ones: {}", ones.len());

    // 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: {}", till_five[5]);
}

Ломтики

Срезы - это виды в список объектов и имеют тип [T] , указывающий кусочек объектов с типом T

Срез - это нестандартный тип , поэтому его можно использовать только по указателю. (Строковая мировая аналогия: str , называемый строковым срезом, также не поддерживается.)

Массивы набираются на срезы, и векторы могут быть разыменованы на срезы. Поэтому методы среза могут применяться к обоим из них. (Строковая мировая аналогия: str - String , что [T] - Vec<T> .)

fn main() {
    let vector = vec![1, 2, 3, 4, 5, 6, 7, 8];
    let slice = &vector[3..6];
    println!("length of slice: {}", slice.len()); // 3
    println!("slice: {:?}", slice); // [4, 5, 6]
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow