Duration

Option<T>의 일부 사용법은 이미 살펴봤습니다. 'T' 타입의 값을 저장하거나 아무것도 저장하지 않습니다. 예를 들어 String::findOption<usize>를 반환합니다.

fn main() {
    let name = "Löwe 老虎 Léopard Gepardi";
    let mut position: Option<usize> = name.find('é');
    println!("find의 반환값 {position:?}");
    assert_eq!(position.unwrap(), 14);
    position = name.find('Z');
    println!("find의 반환값 {position:?}");
    assert_eq!(position.expect("문자를 찾을 수 없음"), 0);
}
This slide should take about 10 minutes.
  • Option is widely used, not just in the standard library.
  • unwrapOption의 값을 반환하거나 패닉을 반환합니다. expect도 비슷하지만 오류 메시지가 표시됩니다.
    • None 발생 시 패닉 상태가 될 수 있지만 '실수'로 None을 체크하는 것을 잊을 수는 없습니다.
    • 무언가를 함께 해킹할 때 모든 곳에서 unwrap/expect를 실행하는 것이 일반적이지만 프로덕션 코드는 일반적으로 더 나은 방식으로 None을 처리합니다.
  • 틈새 최적화란 Option<T>가 메모리에서 T와 크기가 같은 경우가 많다는 것을 의미합니다.