Здравствуйте, sergii.p, Вы писали:
SP>споткнулся на такой забавный момент. Пока не понимаю причины
SP>...
SP>Мне казалось что первый код должен автоматом переходить во второй. Но получается диапазоны вносят какие-то модификации в этот алгоритм.
Если в коде
fn main() {
let mut nums = [1, 2, 3, 4, 5, 6, 7];
let some_bad_ref = &mut nums[0..nums.len() - 1];
}
"рассахарить" последнюю строку, то получится
...
let some_bad_ref = std::ops::IndexMut::index_mut(&mut nums, 0..nums.len()-1);
Первый аргумент (&mut nums) функции IndexMut::index_mut
уникально заимствует nums, поэтому во второй аргумент nums уже передать нельзя