2.1.7 Result 다루기
그런데 코드 2-19에서 왜 함수 뒤에 .expect를 추가하는 것일까? 자세히 살펴보면 FromStr 트레이트 구현이 Result를 반환하는 것을 볼 수 있다. Result는 Option과 거의 비슷하며 값은 성공 또는 에러, 두 가지 중 하나다. 성공의 경우, Ok(value)로 값을 캡슐화한다. 에러의 경우에는 Err(error)로 캡슐화한다. Result 타입도 열거 타입으로 구현되며 다음과 같다.
코드 2-20 러스트 표준 라이브러리의 Result 정의
pub enum Result<T, E> {
Ok(T),
Err(E),
}
Option과 마찬가지로 Result에는 다양한 메서드와 트레이트가 구현되어 있다. 이러한 메서드 중 하나는 expect로, 문서에 따르면 포함된 Ok 값을 반환한다. Ok에 쌓인 QuestionId를 실제로 반환한다는 것을 알 수 있으며, expect는 해당 값을 반환하든지 아니면 지정한 에러 메시지와 함께 패닉 상태를 반환한다.