Avatar ·

Cómo obtener el valor poseído de `Box<T>` en Rust sin copiar

¡Hola a todos! Empecé a aprender Rust y me encontré con un problema al trabajar con punteros inteligentes. Tengo una estructura que no implementa el trait `Copy` (por ejemplo, contiene `Vec` o `String`). La coloco en un `Box` para pasarla al heap, pero luego necesito extraer el valor original de vuelta para seguir trabajando con él sin préstamos. Aquí hay un ejemplo: ```rust struct Data { numbers: Vec, } fn main() { let boxed = Box::new(Data { numbers: vec![1, 2, 3] }); // ¿Cómo obtener Data de vuelta ahora para que numbers pase a ser poseído? // Me gustaría algo como: let data = boxed.into_inner(); // ¡Pero no existe tal método! } ``` Intenté usar `*boxed` para desreferenciar, pero eso da una referencia, no posesión. Intenté hacer `let data = *boxed;` — el compilador dice que `Data` no implementa `Copy`. Probé bloques unsafe, pero tengo miedo de hacer algo mal. Vi que en algunas discusiones mencionan `Box::into_raw`, pero la documentación me resulta un poco complicada. P