我可以执行以下类型的递归并按预期工作:
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
我该如何解决?
答案 0 :(得分:2)
Rust当前不提供此功能。问题跟踪器上有一个与此有关的open issue。现在,您必须手动进行破坏。
let (i1, j1) = test(i, j);
i = i1;
j = j1;