我可以在struct Route中设置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>
}
Run Code Online (Sandbox Code Playgroud)
你把它写成一个额外的特征界限:
pub struct AMoreDifferentRoute<'a> { // '
waypoints: &'a Vec<Box<Coord+'a>>
}
Run Code Online (Sandbox Code Playgroud)
您需要指定生命周期,Box<Coord+'a>因为可以为具有生命周期参数本身的结构实现特征,因此即使实际结构类型隐藏在特征对象后面,也应该有一种方法来指定此生命周期参数.
此外,你不能裸露,Coord因为它的大小是未知的,因为Vec需要知道它的组件大小才能正确地将它们放在内存中.因此,您需要某种包装来存储特征对象.Box会做得很好.