rust - 借用和终身为工厂具体实施
问题描述
我对 rust 很陌生,目前正在尝试简单的概念来更多地理解它。我创建了一个具体工厂的示例,该示例采用特征依赖关系,其create
方法返回由特征定义的具体实例。
我收到关于终身借款的错误。
我在这里的操场上创建了一个失败的例子。
解决方案
您做的大部分事情都是正确的,您只错过了一个主要限制:当您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
。
我还用 an 替换了您的盒装特征对象,impl SomethingToUse
因为我希望在大多数情况下,这不是必需的。
推荐阅读
- angular - 在组件中处理成功的动作调度
- sql - SSRS 饼图图例
- events - 如何向 Splunk 中的事件添加自定义字段?
- sumo - 如何在 SUMO 模拟中获得角速度
- php - Guzzle *70 recv() 失败(104:对等方重置连接)
- javascript - 如何使用 for 循环在 jquery 中追加数据?
- ruby-on-rails - 使用不同的外键引用相同的模型两次或创建多对多关联
- apache-spark - 在提交通过 pyspark 代码连接 hbase 的 spark 作业期间获取“IOException:Broken pipe”
- spring-boot - What is the proper dependency configuration for Vaadin CssLayout
- excel - 使用 Excel 创建 Visio ER 图