¿Por qué el parámetro "toma prestado" el valor? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
¿Verificador de préstamos y argumentos de función en Rust, correcto o demasiado celoso? [duplicar] 1 respuestaAquí hay una muestra:
struct X(u32);
impl X {
fn f(&mut self, v: u32) {}
}
fn main() {
let mut x = X(42);
// works
let v = x.0;
x.f(v);
// cannot use `x.0` because it was mutably borrowed
x.f(x.0);
}
error[E0503]: cannot use `x.0` because it was mutably borrowed
--> src/main.rs:16:9
|
16 | x.f(x.0);
| - ^^^ use of borrowed `x`
| |
| borrow of `x` occurs here
Cual es la razonx.f(x.0)
¿No funciona?x.0
se pasa como argumento, vinculado a lav
parámetro, de tipou32
: no hay absolutamente ninguna posibilidad de que la función de acceso al cuerpox.0
a través del parámetro.
Además, me parece muy extraño que:
f(something);
no funciona, mientras que:
v = something;
f(v);
trabajos.