option을 사용하고 Some 내부에 들어간 값만 출력할 때의 방법
사실 누군가에게는 이 내용이 정말 쉬운 내용일 수 있다.
하지만 rust를 처음 시작하는 나에게 쉽지 않았던 내용이기 때문에 내가 공부하기 위해서 정리 ~
fn take_five(value: Vec<i32>) -> Option<i32> {
if value.len() < 5 {
None
} else {
Some(value[4])
}
}
```fn take_five(value: Vec<i32>) -> Option<i32> {``` 부분을 잠시 모르는 분들을 위해서 설명.
들어오는 아규먼트(value)가 벡터(Vec) 데이터 구조이며, i32(<i32\>) 타입으로 되어있다.
위와 같은 함수로 출력되는 Some 값을 추출하기 위해 아래 두가지 방법이 존재한다.
방법 1. match 사용하여 추출
방법 2. if문으로 Some일 경우 unwrap
fn main() {
let new_vec = vec![1, 2, 3, 4, 5, 6, 7];
let index = take_five(new_vec);
match index {
Some(number) => println!("{}", number),
None => println!("Nothing"),
}
}
위 코드에서 new_vec
이라는 벡터의 5번째 값을 출력하게 될 것이며,
match에서
Some(number) => println!("{}", number),
부분은 Some(number)
안에 존재하는 number
값을 출력하게 될 것이며, 만약 None일 경우 Nothing
이 출력될 것이다.
if문에서 is_some
Method를 이용하여 작업
fn main() {
let new_vec = vec![1, 2, 3, 4, 5, 6, 7];
let index = take_five(new_vec);
if index.is_some() {
println!("{}", index.unwrap()); // unwarp보다 expect를 사용하는 것을 더 추천한다.
}
is_some
Method는 Option 값이 Some인 경우 true를 반환한다.
내용 출처:
> mithradates - 프로그래밍 언어 러스트를 배웁시다!