繁体   English   中英

如何设置Rust特征的寿命?

[英]How do you set the lifetime of a Rust trait?

我可以在结构路径中设置Waypoint的生存期。 在结构AMoreDifferentRoute中,我使用特征Coord并获取错误

明确的生命周期限制

在这种情况下,如何设置特征的寿命?

extern crate collections;
use super::wp;
use coord::Coord;


pub struct Route<'a> {
    waypoints: &'a Vec<wp::Waypoint>
}

pub struct AMoreDifferentRoute<'a> {
    waypoints: &'a Vec<Coord>
}

您将其写为附加特征绑定:

pub struct AMoreDifferentRoute<'a> {   // '
    waypoints: &'a Vec<Box<Coord+'a>>
}

您需要在Box<Coord+'a>指定生存期,因为特征可以为本身具有生存期参数的结构实现,因此,即使实际的结构类型隐藏在a后面,也应该有一种方法来指定此生存期参数特征对象。

而且,您无法拥有裸Coord因为它的大小未知,因为Vec需要知道其组件大小才能正确地将它们布置在内存中。 因此,您需要某种包装器来存储特征对象。 Box会很好。

由于Coord是特征,因此需要以某种方式将值装箱为特征对象 ,例如Vec<Box<Coord>>

您还应该强烈考虑这是否确实是您想要的; 很多时候不是。 但是要对此做出任何判断,我需要查看更多代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM