Tony Hoare 는 null 참조를 자기 '10억 달러짜리 실수' 라고 불렀어 — 수십 년의 크래시, 보안 구멍, 새벽 3시 호출, 다 거기 있다고 주장하는데 없는 값 하나에서. Rust 엔 null 이 그냥 없어. 그 자리에: Option.
부재를 타입으로
Option<T> 는 variant 둘짜리 enum 이야: Some(T) (값 존재) 와 None (여기 아무것도). '없을 수도 있음' 이 타입의 일부가 돼. 결과를 못 찾을 수 있는 함수는 Option<T> 를 반환하고, 호출자는 None 경우를 먼저 다루지 않고선 안쪽 값을 못 써. 컴파일러가 부재를 빠져나가게 안 둬.
상자를 열어야 해
Option 을 안쪽 값인 척 실수로 못 써 — 둘은 다른 타입이야. T 에 닿으려면 match 하거나, if let 을 쓰거나, unwrap_or 같은 메서드를 불러. 'null 체크 까먹음' 버그가 사라졌어: 타입 시스템이 체크를 필수로 만들어.
null 이 없으면 null 포인터 예외도 없어 — safe Rust 에선 영원히. '거기 있어야 했는데' 크래시 부류 전체가 줄어든 게 아니라 사라졌어. 부재를 일어나는 자리에서 딱 한 번 처리하고, 컴파일러가 안 까먹었다고 증명해.
unwrap: 장전된 총
.unwrap() 은 값을 꺼내지만 None 이면 panic 해. 예제랑 테스트엔 괜찮아; 실전 코드에선 '이건 Some 이라고 확신해, 틀리면 크래시' 라는 의도적 선언이야. unwrap_or, unwrap_or_else, map, 또는 match 를 선호해 — 값이 없을 때 뭐가 일어날지 말하게 만들지, 크래시 안 하고.