개발자 Eli Bendersky는 ‘검증하지 말고 파싱하라’ 원칙을 Rust 예제로 설명했습니다. 비어 있지 않음을 확인한 뒤에도 Vec로 돌려주면 호출자는 빈 경우를 다시 처리해야 하지만, 머리 요소를 반드시 갖는 NonEmpty 타입으로 변환하면 조건이 타입에 남습니다. Serde와 열거형, 0이 아닌 정수 타입도 같은 접근의 예로 제시합니다. 모든 입력 검사가 사라지는 것은 아니며, 파싱 단계가 보장한 불변조건과 이후 변경 가능성을 설계에 정확히 반영하는 것이 핵심입니다.