= &mut v[..];
let slice_2 = &mut slice_1[..];
slice_2[0] += 1;
slice_1[0] += 1;
println!("{:?}", v);
Подскажите, пожалуйста - почему Rust не ругается на такой код? Разве тут нет одновременно двух мутабельных ссылок на одни и те же данные?
потому что nll. slice_2 умирает до повторного использования slice_1
до nll ругался https://stackoverflow.com/questions/50251487/what-are-non-lexical-lifetimes
let mut v = vec![1, 2, 3, 4, 5]; let slice_1 = &mut v[..]; let slice_2 = &mut slice_1[..]; slice_1[0] += 1; slice_2[0] += 1; Вот так будет ругаться. А если убрать последнюю строку, то опять не будет.
Обсуждают сегодня