¿Cuál es la diferencia entre los traits Copy y Clone en Rust?
Acabo de empezar a aprender Rust y me confundí con dos traits: Copy y Clone. Parece que ambos permiten copiar valores, pero el compilador se comporta de manera diferente.
Aquí hay un ejemplo que me confundió. Intento copiar una struct:
```rust
struct Point {
x: i32,
y: i32,
}
fn main() {
let p1 = Point { x: 10, y: 20 };
let p2 = p1; // move
let p3 = p1; // error: use of moved value
}
```
Si agrego `#[derive(Copy)]`, el código funciona:
```rust
#[derive(Copy, Clone)]
struct Point {
x: i32,
y: i32,
}
```
Pero si uso solo `Clone`, tengo que llamar explícitamente `.clone()`:
```rust
let p2 = p1.clone();
```
¿Por qué es así? ¿Cuándo se debe usar Copy y cuándo Clone? ¿Cuál es la diferencia fundamental? ¿Y por qué Copy requiere Clone (he visto que a menudo van juntos en derive)?
Explíquenme, por favor, como a un principiante. ¡Gracias de antemano!
<<>>
Diferencia principal: semántica de movimiento vs copia
En Rust, por defecto, se
No answers yet.
Inicia sesión para dejar una respuesta