fn t(x: &mut u8) -> &mut u8 {
x
}
fn main() {
let mut x = 5u8;
let y = & mut x;
let z = t(y);
println!("{}", y);
}
Компиляция это дает мне эту ошибку:Ссылка передается в качестве параметра не перемещается
main.rs:9:20: 9:21 error: cannot borrow `y` as immutable because `*y` is also borrowed as mutable
main.rs:9 println!("{}", y);
Я бы подумал y
бы было перемещено во время вызова t
, а затем обратно в z
, в результате чего error: use of moved value
- Почему вместо этого возникает это сообщение об ошибке?
- Rust автоматически создает новый заимствован вместо передачи права собственности, когда ссылки предлагаются в качестве параметров функции?
- Какова цель этого поведения?
Смотрите также [Moving mutably заимствованные собственности] (http://stackoverflow.com/q/27650188/155423) – Shepmaster