본문 바로가기
  • 흐소흐
프로그래밍 (programming)/Rust

Rust에서 Option<T>의 역할

by 흐소흐 2023. 5. 9.

Rust에서 Option<T>은 값이 있을 수도 있고 없을 수도 있는 값을 나타내는 열거형 타입입니다. Option<T>Some(T) 또는 None 두 가지 값을 가질 수 있습니다.

Some(T)T 타입의 값이 존재한다는 것을 나타냅니다. 따라서, Option<T> 타입의 값이 Some(T)이라면, 해당 값은 T 타입의 값을 가지고 있습니다.

None은 값이 없음을 나타내는 것으로, Option<T> 타입의 값이 None이라면, 해당 값은 T 타입의 값을 가지고 있지 않음을 나타냅니다.

아래는 Option<T> 타입을 사용하는 간단한 예시입니다.

  fn divide(x: f64, y: f64) -> Option<f64> {
    if y == 0.0 {
        None
    } else {
        Some(x / y)
    }
}

fn main() {
    let result1 = divide(10.0, 2.0);
    let result2 = divide(10.0, 0.0);

    match result1 {
        Some(value) => println!("result1 = {}", value),
        None => println!("result1 is undefined"),
    }

    match result2 {
        Some(value) => println!("result2 = {}", value),
        None => println!("result2 is undefined"),
    }
}

위 코드에서 divide 함수는 xy로 나눈 값을 반환하는 함수입니다. y가 0인 경우는 값이 정의되지 않으므로, 이 경우 None을 반환합니다. 그 외의 경우는 Some(x / y)를 반환합니다.

main 함수에서는 divide 함수를 호출한 결과를 Option<T> 타입의 변수 result1result2에 저장하고, 이를 패턴 매칭을 사용하여 처리합니다. result1의 경우 값이 있으므로 Some(value)에 해당하는 블록이 실행되어 결과를 출력하고, result2의 경우 값이 없으므로 None에 해당하는 블록이 실행되어 "result2 is undefined`라는 문자열을 출력합니다.