нет возможности выбора в менюа конфиг Вы написали?
пример кстати не наивный а философски спорный
считать ли одновременный перебор элементов массива с его изменением ошибкой или нет
fn double_vec_in_place<T: Clone>(v: &mut Vec<T>) {
let len = v.len();
// алоцируем память, иначе UB в unsafe
v.reserve(len * 2);
// удваиваем длину, правая половина при этом невалидна для чтения, т.е. write only
unsafe { v.set_len(len * 2); }
let (reader, unsafe_only_writer) = v.split_at_mut(len);
for (i, el) in reader.iter().enumerate() {
unsafe_only_writer[i] = el.clone();
}
// здесь вектор опять валидный, а значит наша функция safe
}
let mut v = vec![1, 2, 3, 4, 5];
double_vec_in_place(&mut v);
println!("{:?}", v);
const arr = [1, 2, 3, 4, 5];
for (const el of arr) {
arr.push(el);
}
var list = new List<int> { 1, 2, 3, 4, 5 };
foreach (var el in list)
{
list.Add(el);
}
vector<int> vec = { 1, 2, 3, 4, 5 };
for (auto el: vec)
{
vec.push_back(el);
}
let mut vec = vec![1, 2, 3, 4, 5];
for el in vec {
vec.push(el);
}
Попробуем по другому, и все равно нет:let mut vec = vec![1, 2, 3, 4, 5];
for el in vec.iter() {
vec.push(*el);
}
Rust ничего не знает о векторе, но его система типов не позволяет сделать этонельзя использовать зарезервированное слово Array
для переменной.
Сергей Соколов, можно...