Comment obtenir une valeur possédée depuis `Box<T>` en Rust sans copie ?
Bonjour à tous ! J'ai commencé à apprendre Rust et j'ai rencontré un problème en travaillant avec les pointeurs intelligents. J'ai une structure qui n'implémente pas le trait `Copy` (par exemple, elle contient un `Vec` ou une `String`). Je la place dans une `Box` pour l'allouer sur le tas, mais ensuite j'ai besoin d'extraire la valeur originale pour continuer à travailler avec elle sans emprunt.
Voici un exemple :
```rust
struct Data {
numbers: Vec,
}
fn main() {
let boxed = Box::new(Data { numbers: vec![1, 2, 3] });
// Comment récupérer Data maintenant, pour que numbers soit possédée ?
// J'aimerais quelque chose comme : let data = boxed.into_inner();
// Mais cette méthode n'existe pas !
}
```
J'ai essayé d'utiliser `*boxed` pour déréférencer, mais cela donne une référence, pas une possession. J'ai tenté `let data = *boxed;` — le compilateur dit que `Data` n'implémente pas `Copy`. J'ai essayé des blocs unsafe, mais j'ai peur de faire une erreur. J'ai vu que dans certaines discussions on mentionne `Box::into_raw`, mais la documentation est un peu complexe pour moi.
Puis
No answers yet.
Connectez-vous pour laisser une réponse