'값이 있을 수도' 의 enum 인 Option 을 만났어. 그 형제가 '에러가 있을 수도' 의 enum 인 Result 야. 지금 — 그냥 또 하나의 enum 으로 — 만나두면 Error Handling 트랙 전체가 집처럼 느껴져.
Result 는 Option 의 사촌이야
Result<T, E> 는 variant 둘: Ok(T) (성공, 값을 실음) 와 Err(E) (실패, 에러를 실음). Option 이 '있음 또는 없음' 이라면, Result 는 '성공 또는 실패, 그리고 실패 이유는 이거' 야. 그 추가된 E — 이유 — 가 차이 전부야.
처리 방식은 같아
enum 이니까 방금 배운 도구로 Result 를 처리해: Ok 랑 Err 에 match, 또는 if let Ok(v), 또는 unwrap_or 같은 메서드. 실패할 수 있는 건 뭐든 — 숫자 파싱, 파일 읽기, 소켓 열기 — Result 를 반환하고, 컴파일러가 Err 경우를 마주하게 만들어.
에러는 예외가 아니라 값이야. Rust 엔 try/catch 도 던져지는 예외도 없어. 실패할 수 있는 함수는 반환 타입 (
Result) 으로 그렇다고 말하고, 실패는 네가 match 하는 평범한 값으로 코드를 흘러. 본 적도 없는 에러를 실수로 무시 못 해 — 타입이 시그니처에 바로 있거든.다음 트랙으로의 다리
사방에서 Result 를 반환하면 장황해질 수 있어 — match, match, match. Error Handling 트랙이 에러 전파를 한 글자로 만드는 ? 연산자를 소개하고, 네 에러 타입을 정의하는 법도. enum 은 이미 이해했으니; 이제 그걸 ergonomic 하게 휘두르는 법을 배워.