小编One*_*ros的帖子

如何在不引起移动的情况下访问 Option<T> 中的 T?

我正在研究二叉搜索树实现中的插入函数。这是我的代码:

pub struct Node {
    data: i32,
    left: Option<Box<Node>>,
    right: Option<Box<Node>>
}

fn insert_at_root(mut root_node: Node, new_node: Node) -> Node { //not reference because root_node will be mutated
    if root_node.data > new_node.data { // value less than root
        if let Some(left) = root_node.left {
            insert_node(*left, new_node); // *left is a way to downcast box, i.e. *left = T from Box<T>
        }
        else {
            root_node.set_left(Some(Box::new(new_node)));
        }
    }
    else if root_node.data < new_node.data {
        if let Some(right) = root_node.right {
            insert_node(*right, new_node); …
Run Code Online (Sandbox Code Playgroud)

rust

1
推荐指数
1
解决办法
2706
查看次数

标签 统计

rust ×1