[英]How do you create a generic function in Rust with a trait requiring a lifetime?
[英]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.