gpt4 book ai didi

rust - 从工厂到具体实现的借用和生命周期

转载 作者:行者123 更新时间:2023-12-03 11:45:11 25 4
gpt4 key购买 nike

我对使用rust 非常陌生,目前正在尝试一些简单的概念以进一步了解它。我创建了一个具有Trait依赖关系的Concrete Factory的示例,其create方法返回了一个由trait定义的具体实例。
我收到有关终身借贷的错误。
我在这里的操场上创建了一个失败的例子。
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=f9753708dc202c27101442952dabf560

最佳答案

您所做的大多数事情都是正确的,只有一个主要的限制遗漏了:当您从工厂返回dyn SomethingToUse时:

pub fn create(&self) -> Result<Box<dyn SomethingToUse>>{
let something = SomethingConcrete{
helper: self.helper // I removed the & here. That would be a double reference.
};
return Ok(Box::new(something));
}
它包含对 'a有效的引用。但是,您没有对此进行注释。做到这一点的方法是 dyn SomethingToUse + 'a
我还用 impl SomethingToUse替换了装箱的特征对象,因为我希望在大多数情况下都不需要这样做。
链接到工作代码: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=b02c4ff9d5e2ad03b7dfd2db00941b7c

关于rust - 从工厂到具体实现的借用和生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62753605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com