Я пробую Rust и у меня проблемы с пониманием "заимствования".
struct Foo<T> {
data: T,
}
impl<T> Foo<T> {
fn new(data: T) -> Self {
Foo {
data: data,
}
}
}
fn main() {
let mut foo = Foo::new("hello");
let x = &mut foo;
let y = &mut foo;
println!("{}", foo.data);
}
Почему этот код компилируется без ошибок?В конце концов, я получаю несколько изменяемых ссылок на foo
.В документации написано следующее:
Правила ведения ссылок
Давайте подведем итоги того, что мы обсуждали о ссылках:
a) В любой момент времени выможет иметь одну (но не обе) одну изменяемую ссылку или любое количество неизменяемых ссылок.
b) Ссылки всегда должны быть действительными.
В чем причина такого поведения?Спасибо!