У меня есть следующий код:
#[derive(Debug)]
pub enum List<'a> {
Nil,
Cons(i32, &'a List<'a>)
}
{
let x = Cons(1, &Cons(2, &Nil));
println!("{:?}", x);
}
Работает нормально.Я не понимаю, почему этот код не сообщает об ошибке, не упал Cons(2, &Nil)
перед построением Cons(1, _)
?
Более того, после того, как я добавил пустой impl Drop
для List
, приведенный выше код больше не работает:
impl<'a> Drop for List<'a> {
fn drop(&mut self) {
}
}
Он сообщает об ошибках, которые borrowed value does not live long enough
для Cons(2, _)
и Nil
.
Почему существует такая разница между до и после добавления impl Drop
?