>

다음 유형의 재귀를 수행하고 예상대로 작동합니다.

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

    이 기능은 현재 Rust에서 사용할 수 없습니다. 관련된 이슈 트래커에 공개 이슈가 있습니다. 지금은 손으로 구조를 해제해야합니다.

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

  • 이전 python - X 개의 스레드 수를 끝없이 반복하는 방법
  • 다음 Flutter에서 두 번째 앱 바를 제거하는 방법