Vec<T>
имеет два метода:Почему Vec <T> :: split_at_mut заимствовать вектор для остальной части области?
fn push(&mut self, value: T)
fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T])
Они оба принимают изменяемую ссылку на вектор. Но сфера применения заема, кажется, отличается, например:
fn works() {
let mut nums: Vec<i64> = vec![1,2,3,4];
nums.push(5);
println!("{}", nums.len());
}
fn doesnt_work() {
let mut nums: Vec<i64> = vec![1,2,3,4];
let (l,r) = nums.split_at_mut(2);
println!("{}", nums.len());
}
fn also_works() {
let mut nums: Vec<i64> = vec![1,2,3,4];
let _ = nums.split_at_mut(2);
println!("{}", nums.len());
}
doesnt_work
функция не обобщать, говоря, что уже изменяемый заема на nums
и что она заканчивается, и конец функции. Проблема исчезает, если я игнорирую значения, возвращаемые с split_at_mut
.
Обратите внимание, что это тот же основной вопрос, что и http://stackoverflow.com/q/32761524/155423. – Shepmaster