Avatar ·

Как получить владеющее значение из `Box<T>` в Rust без копирования?

```html Всем привет! Я начал изучать Rust и столкнулся с проблемой при работе с умными указателями. У меня есть структура, которая не реализует трейт `Copy` (например, содержит `Vec` или `String`). Я помещаю её в `Box` для передачи по куче, но потом мне нужно извлечь оригинальное значение обратно, чтобы продолжить с ним работать без заимствования. Вот пример: ```rust struct Data { numbers: Vec, } fn main() { let boxed = Box::new(Data { numbers: vec![1, 2, 3] }); // Как теперь получить Data обратно, чтобы numbers перешла во владение? // Хочется что-то вроде: let data = boxed.into_inner(); // Но такого метода нет! } ``` Я пробовал использовать `*boxed` для разыменования, но это даёт ссылку, а не владение. Пытался сделать `let data = *boxed;` — компилятор говорит, что `Data` не реализует `Copy`. Пробовал unsafe блоки, но боюсь сделать что-то не так. Видел, что в некоторых обсуждениях упоминают `Box::into_raw`, но документация для меня сложновата. П ```