Loops 在Rust中更改循环中的可变引用

Loops 在Rust中更改循环中的可变引用,loops,recursion,rust,borrow-checker,Loops,Recursion,Rust,Borrow Checker,我有一个简单的递归数据结构,如下所示: struct X{ i:u32, n:Option<Box<X>> } fn new(i:u32,x:X)->X{ X{i,n:Some(Box::new(x))} } 不幸的是,借阅检查器似乎对这段代码不满意。有什么方法可以让它工作,或者我应该使用原始指针吗?无需担心。我想出来了。事实证明它并没有那么复杂 use std::borrow::B

我有一个简单的递归数据结构,如下所示:

    struct X{
       i:u32,
       n:Option<Box<X>>
    }
    fn new(i:u32,x:X)->X{
       X{i,n:Some(Box::new(x))}
    }

不幸的是,借阅检查器似乎对这段代码不满意。有什么方法可以让它工作,或者我应该使用原始指针吗?

无需担心。我想出来了。事实证明它并没有那么复杂

    use std::borrow::BorrowMut;

    struct X{
        i:u32,
        n:Option<Box<X>>
    }
    fn n(i:u32,x:X)->X{
        X{i,n:Some(Box::new(x))}
    }
    let mut x = n(7,n(3,n(4,n(0,X{i:3,n:None}))));
    let mut i:&mut X = &mut x;
    while let Some(n) = &mut i.n{
        println!("{}",i.i);
        i = n.borrow_mut();
    }
使用std::borrow::BorrowMut;
结构X{
i:u32,
n:选择权
}
fn n(i:u32,x:x)->x{
X{i,n:Some(Box::new(X))}
}
设mutx=n(7,n(3,n(4,n(0,x{i:3,n:None}));
设mut i:&mut X=&mut X;
而让一些(n)=&mut i.n{
println!(“{}”,i.i);
i=n.借用;
}
    use std::borrow::BorrowMut;

    struct X{
        i:u32,
        n:Option<Box<X>>
    }
    fn n(i:u32,x:X)->X{
        X{i,n:Some(Box::new(x))}
    }
    let mut x = n(7,n(3,n(4,n(0,X{i:3,n:None}))));
    let mut i:&mut X = &mut x;
    while let Some(n) = &mut i.n{
        println!("{}",i.i);
        i = n.borrow_mut();
    }