无法移出self.attribute上Box :: into_raw的借用内容

问题描述 投票:1回答:1
pub struct Themepark {
    attraction: Box<Attraction>
}

注意:Attraction是一个特质!

impl Themepark {

    pub fn open(&mut self) -> Result<(), ()> {

        let attraction = Box::into_raw(self.attraction);

    ...
    }

}

这给了我

> cannot move out of borrowed content

self.attraction内的Box::into_raw

现在我明白了那个特定的错误信息意味着什么,但我不明白如何解决它,因为Box::into_raw期望Box<T>作为参数,而不是参考或任何东西。

https://doc.rust-lang.org/std/boxed/struct.Box.html#method.into_raw

rust borrow-checker
1个回答
3
投票

你可能无法在self.attraction上使用该功能,同时可靠地借用self;按照其文档中的第一行:

消耗Box

你要么需要.clone()它,要么使用消耗self的函数(例如fn open(self))。

我建议重新阅读The Rust Book's chapter on Ownership

© www.soinside.com 2019 - 2024. All rights reserved.