Изучение различных методов обращения вектора в Rust

В Rust векторы — это динамические массивы, размер которых может увеличиваться или уменьшаться. Реверс вектора означает изменение порядка его элементов так, чтобы последний элемент стал первым, и наоборот. В этой статье мы рассмотрим несколько методов обращения вектора в Rust, сопровождаемые примерами кода.

Метод 1: использование метода reverse

fn main() {
    let mut vec = vec![1, 2, 3, 4, 5];
    vec.reverse();
    println!("{:?}", vec);
}

Выход: [5, 4, 3, 2, 1]

Метод 2: создание нового вектора с перевернутыми элементами

fn main() {
    let vec = vec![1, 2, 3, 4, 5];
    let reversed_vec: Vec<_> = vec.iter().rev().cloned().collect();
    println!("{:?}", reversed_vec);
}

Выход: [5, 4, 3, 2, 1]

Метод 3. Итерация и замена элементов

fn main() {
    let mut vec = vec![1, 2, 3, 4, 5];
    let len = vec.len();
    for i in 0..len/2 {
        vec.swap(i, len - i - 1);
    }
    println!("{:?}", vec);
}

Выход: [5, 4, 3, 2, 1]

Метод 4. Использование стека для обращения вектора

fn main() {
    let vec = vec![1, 2, 3, 4, 5];
    let mut stack: Vec<_> = vec.into_iter().collect();
    let reversed_vec: Vec<_> = stack.drain(..).collect();
    println!("{:?}", reversed_vec);
}

Выход: [5, 4, 3, 2, 1]

Метод 5: рекурсивное обращение вектора

fn reverse_vec(vec: &mut [i32]) {
    let len = vec.len();
    if len <= 1 {
        return;
    }
    vec.swap(0, len - 1);
    reverse_vec(&mut vec[1..len - 1]);
}
fn main() {
    let mut vec = vec![1, 2, 3, 4, 5];
    reverse_vec(&mut vec);
    println!("{:?}", vec);
}

Выход: [5, 4, 3, 2, 1]

В этой статье мы рассмотрели пять различных методов обращения вектора в Rust. Эти методы включают использование метода reverse, создание нового вектора с перевернутыми элементами, итерацию и замену элементов, использование стека и рекурсивное обращение вектора. В зависимости от вашего конкретного варианта использования вы можете выбрать метод, который лучше всего соответствует вашим потребностям.