반응형
개요
# Rust 언어는 `Option`과 `Result`라는 두 가지 열거형 타입을 제공하며 아래와 같은 특징을 가지고 있음
Option
- Option은 값이 존재하지 않을 수 있는 경우를 표현하기 위해 사용됨
- 이는 일종의 nullable 타입으로 생각할 수 있음
- Option은 Some 또는 None 중 하나의 값을 가질 수 있음
- Option<i32>는 Some(5)와 같이 정수 5를 값으로 가질 수도 있고 값이 존재하지 않는 None을 가질 수도 있습니다.
- 이는 컴파일 타임에 안전성을 제공해 값이 존재하지 않는 경우 발생할 수 있는 런타임 오류를 방지할 수 있습니다.
Result
- Result는 함수의 반환 값으로 사용되며, 함수가 성공적으로 실행되었는지 또는 오류가 발생했는지를 나타냄
- Result는 Ok 또는 Err 중 하나의 값을 가질 수 있음
- Result<i32, String>은 정수 값을 반환할 수 있지만, 함수 실행 도중 오류가 발생할 경우 Err("Error message")와 같은 문자열 오류 메시지를 반환할 수도 있음
이러한 Option과 Result 타입은 굉장히 자주 사용되며, Rust의 메모리 안정성을 유지하는데 매우 중요한 요소임
728x90
예제
Option을 사용하여 정수의 합을 계산하는 간단한 함수 예제
fn sum(values: &[Option<i32>]) -> Option<i32> {
let mut total = 0;
for value in values {
match value {
Some(num) => total += num,
None => return None,
}
}
Some(total)
}
코드 설명
- Option<i32> 값을 가진 배열을 입력으로 받아 합을 계산함
- 만약 배열에 None 값이 하나라도 있다면, None을 반환하고
- 그렇지 않으면 합계를 Some 값으로 반환함
Result를 사용하여 정수의 합을 계산하는 간단한 함수 예제
fn sum_results(values: &[Result<i32, String>]) -> Result<i32, String> {
let mut total = 0;
for value in values {
match value {
Ok(num) => total += num,
Err(err) => return Err(err.to_string()),
}
}
Ok(total)
}
코드 설명
- Result<i32, String> 값을 가진 배열을 입력으로 받아 합을 계산함
- 만약 배열에 Err 값이 하나라도 있다면, 해당 오류 메시지를 String 값으로 변환하여 Err로 반환하고
- 그렇지 않으면 합계를 Ok 값으로 반환함
SMALL
반응형
'개발 > Rust' 카테고리의 다른 글
Rust의 스레딩 모델과 std::thread 알아보기 (0) | 2023.06.16 |
---|---|
Rust를 이용한 안전한 동시성 프로그래밍 예제 (0) | 2023.06.14 |
Visual Studio Code를 이용한 Rust Debug (0) | 2023.04.29 |
[Rust] Box와 Rc의 차이점 (0) | 2023.03.31 |