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
함수는 x
를 y
로 나눈 값을 반환하는 함수입니다. y
가 0인 경우는 값이 정의되지 않으므로, 이 경우 None
을 반환합니다. 그 외의 경우는 Some(x / y)
를 반환합니다.
main
함수에서는 divide
함수를 호출한 결과를 Option<T>
타입의 변수 result1
과 result2
에 저장하고, 이를 패턴 매칭을 사용하여 처리합니다. result1
의 경우 값이 있으므로 Some(value)
에 해당하는 블록이 실행되어 결과를 출력하고, result2
의 경우 값이 없으므로 None
에 해당하는 블록이 실행되어 "result2 is undefined`라는 문자열을 출력합니다.