锈中的递归问题

时间:2019-01-22 16:12:40

标签: rust

我可以执行以下类型的递归并按预期工作:

fn test2(i: isize) -> (isize) {
    println!("i={}", i);
    return (i + 1);
}

fn main() {
    let mut i = 1;
    let mut j = 1;
    for t in 0..4 {
        (i) = test2(i);
    }
}
i=1
i=2
i=3
i=4

我的问题是我真正想要的是这种具有多个反馈的递归.....

fn test(i: isize, j: isize) -> (isize, isize) {
    println!("i={} j={}", i, j);
    return (i + 1, j + 1);
}

fn main() {
    for t in 0..4 {
        let (i, j) = test(i, j);
        println!("ii {} jj {}", i, j);
    }
}

运行代码时,我得到以下信息:

i=1 j=1
ii 2 jj 2
i=1 j=1
ii 2 jj 2
i=1 j=1
ii 2 jj 2
i=1 j=1
ii 2 jj 2

如果我让它退出,则会出现以下错误:

for t in 0 .. 4 {
    (i,j) = test(i, j);
    println!("ii {} jj {}", i,j)  ; 
}
        error[E0070]: invalid left-hand side expression                                                                                                                                                          
   --> src/main.rs:265:13                                                                                                                                                                                
    |                                                                                                                                                                                                    
265 |             (i,j) = test(i, j);                                                                                                                                                                    
    |             ^^^^^^^^^^^^^^^^^^ left-hand of expression not valid                

我该如何解决?

1 个答案:

答案 0 :(得分:2)

Rust当前不提供此功能。问题跟踪器上有一个与此有关的open issue。现在,您必须手动进行破坏。

let (i1, j1) = test(i, j);
i = i1;
j = j1;