< 返回版块

javaer 发表于 2019-01-16 15:14

pub struct Node<'a> {
    region: &'a Region,
    first_num: i32,
    second_num: i32,
    direction_node_map:HashMap<Direction,Node>,
}

上面是我的代码 代码倒数第二行 HashMap<Direction,Node> Node这里 总是提示 Missing lifetime specifier 想实现的功能大概是 一个区域里,有很多节点,每个节点通过一个HashMap 跟别的节点 相互关联。 去搜索了相关生命周期的知识, 但是依然有点不知道 这里该怎么写 本身是java程序猿,这里有点疑惑的是, 按照rust 的语言来说,在HashMap里面,我存的应该是 Node节点的指针,所以写过 direction_node_map:HashMap<Direction,Box>,
这样的代码, 在一个对象里,使用别的对象,都必须用对象的指针吗?

评论区

写评论
作者 javaer 2019-01-16 17:54
pub struct Node<'a> {
    region: &'a Region,
    first_num: i32,
    second_num: i32,
    direction_node_map:HashMap<Direction,Node<'a>>,
}

尝试了一下,没提示错误了,在Map的Node后面加上 <'a> 就可以了, Direction是枚举类型,所以可能不需要加吧。 换成指针类型,好像也可以了 direction_node_map:HashMap<Direction,Box<Node<'a>>>。 有点疑惑,我该用 Node<'a> 还是 Box<Node<'a>> ,这两种有什么区别, 在Java里都是引用,就没考虑过这样的问题,也没看懂 <'a> 所谓的生命周期具体的意义 Node的生命周期,取决于 内部包含的 Region的生命周期 跟 map里包含的 Node的生命周期的并集?

1 共 1 条评论, 1 页