조건식 : If - else 표현식

  • Rust에서 if표현식이기 때문에 변수의 값으로 할당할 수 있음
  • 그러나 ifelse 블록이 반환하는 값이 다르면 컴파일에러 발생
fn main () {
    let x = 3;
    let y = 4;

    // Rust에서 if는 표현식이기 때문에 변수 값을 할당하는 데 사용할 수 있음
    let first_flag = if (x > y) { true } else { false };

    // if/else 블록이 반환하는 값이 서로다르면 컴파일 에러 발생
    let second_flag = if (x > y) { x } else { "y is small than x"};
}

반복문 : loop, while, for

loop

  • 조건이 참일 때 까지 반복 실행
  • 일반적으로 무한 루프를 만들 때 사용
  • braek 키워드
    • 특정 조건을 만족할 때 break 을 사용하여 반복 종료
    • break 뒤에 표현식을 사용함으로써 루프문에서 값을 반환할 수 있음
  • 루프 라벨
    • 'label_name : loop { ... }
    • break, continue 와 함께 사용할 때, 이 키워드 바로 바깥쪽 루프로 나가는 대신 루프 라벨에 적힌 루프에 적용되도록 할 수 있음
    • 라벨 이름은 반드시 작은 따옴표로 시작해야 함
fn main () {
    // 1. 반복문에서 값 반환하기
    let mut counter = 0;
    let result = loop {
        counter += 1;

        // 매 반복마다 counter가 10인지 검사, 참이면 반복 종료
        if counter == 10 {
            break counter * 2;
        }
    };
    println!("result : {result}\n");

    // 2. 루프 라벨로 여러 반복문 사이에서 모호함 없애기
    let mut count = 0;
    'counting_up : loop {
        println!("count : {count}");

        let mut remaining = 10;
        loop {
            println!("remaining : {remaining}");
            if remaining == 8 {
                break;
            }
            if count == 2 {
                break 'counting_up; // 현재 루프가 아닌 라벨 이름의 루프에서 탈출
            }

            remaining -= 1;
        };

        count += 1;
    };
    println!("End count : {count}");
}
## 출력 결과 ##
result : 20

count : 0     
remaining : 10
remaining : 9 
remaining : 8
count : 1
remaining : 10
remaining : 9
remaining : 8
count : 2
remaining : 10
End count : 2

while

  • 조건식이 true인 동안 반복
  • 조건식이 false이면 자동으로 반복 종료
  • while문은 loop, if-else, break 의 조합
fn main() {
    let mut number = 3;

    while number != 0 {
        println!("number : {number}");
        number -= 1;
    }
}
number : 3
number : 2
number : 1

for

  • 컬렉션의 모든 요소를 처음부터 끝까지 조회
fn main() {
    let arr = [1, 3, 5, 7, 9];

    for element in arr {
        println!("element : {element}");
    }
}
element : 1
element : 3
element : 5
element : 7
element : 9

'Rust' 카테고리의 다른 글

[Rust] &str vs String : 문자열을 표현하는 두 타입 비교  (0) 2024.04.25
[Rust] 소유권  (0) 2024.04.24
[Rust] 함수  (0) 2024.04.15
[Rust] 데이터 타입 : 복합 (Compound)  (0) 2024.04.15
[Rust] 데이터 타입 : 스칼라 (Scalar)  (0) 2024.04.15

+ Recent posts