Массивы и векторы — фундаментальные структуры данных в Rust. Хотя массивы имеют фиксированный размер, векторы предлагают возможности динамического изменения размера, что делает их более гибкими для многих приложений. В этой статье блога мы рассмотрим различные методы преобразования массивов в векторы в Rust, попутно предоставляя примеры кода. Итак, давайте углубимся и узнаем, как использовать возможности векторов из массивов!
Метод 1: ручное преобразование с помощью цикла
Самый простой подход — вручную перебирать элементы массива и помещать их в вектор с помощью цикла. Вот пример:
fn array_to_vector(arr: &[T]) -> Vec<T>
where
T: Clone,
{
let mut vec: Vec<T> = Vec::new();
for element in arr.iter() {
vec.push(element.clone());
}
vec
}
Метод 2: использование функции to_vec
Стандартная библиотека Rust предоставляет удобный метод под названием to_vec, который преобразует срез в вектор. Этот метод краток и эффективен. Вот пример:
let array = [1, 2, 3, 4, 5];
let vector: Vec<i32> = array.to_vec();
Метод 3: Использование метода collect
Метод collect— это мощный инструмент в Rust для преобразования одного типа коллекции в другой. Мы можем использовать его для преобразования массива в вектор. Вот пример:
let array = [1, 2, 3, 4, 5];
let vector: Vec<i32> = array.iter().cloned().collect();
Метод 4: использование трейта From
Rust предоставляет трейт From, который позволяет нам определять преобразования между типами. Мы можем реализовать From<&[T]>для Vec<T>, чтобы обеспечить прямое преобразование массива в вектор. Вот пример:
impl<T> From<&[T]> for Vec<T>
where
T: Clone,
{
fn from(slice: &[T]) -> Self {
slice.to_vec()
}
}
let array = [1, 2, 3, 4, 5];
let vector: Vec<i32> = Vec::from(&array);
В этой статье мы рассмотрели несколько методов преобразования массивов в векторы в Rust. Мы научились конвертировать вручную с помощью циклов, использовать функцию to_vec, использовать метод collectи реализовывать признак From. У каждого метода есть свои преимущества, поэтому выберите тот, который лучше всего соответствует вашим потребностям. Используя эти методы, вы можете легко преобразовать массивы в векторы и воспользоваться возможностями динамического изменения размера, которые предлагают векторы.