[Rust 공식문서 한국어 정리] ⑨. Rust API Guidelines
[Rust 공식문서 한국어 정리] ⑨. Rust API Guidelines
원문: https://rust-lang.github.io/api-guidelines/
#Rust #Rustlang #APIGuidelines #BestPractices #공식문서
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 서론
Rust API Guidelines는 Rust 프로그래밍 언어로 API를 설계하고 표현하는 방법에 대한 권장사항 모음입니다. Rust 라이브러리 팀이 주도하며, 표준 라이브러리와 Rust 생태계의 다양한 크레이트를 개발한 경험을 바탕으로 작성되었습니다. 이 가이드라인은 강제 규칙이 아닌 권장사항이지만, 이를 따르는 크레이트는 기존 생태계와 더 잘 통합되고 사용성이 높아집니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2. 핵심개념
• API Design: 직관적이고 일관된 인터페이스 설계 원칙
• Naming Conventions: Rust 표준 명명 규칙 (snake_case, CamelCase, SCREAMING_SNAKE_CASE)
• Type Safety: 컴파일 시점에 안전성을 보장하는 타입 설계
• Ergonomics: 사용자가 편하게 사용할 수 있는 API 인체공학
• Interoperability: 기존 Rust 생태계와의 원활한 상호운용성
• Composability: 작은 단위의 조합 가능한 API 설계
• Documentation: 효과적인 문서화와 예제 제공
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. 주요내용상세
3.1 체크리스트 구조
이 가이드라인은 두 가지 주요 형태로 제공됩니다:
• Concise Checklist — 크레이트 리뷰 시 빠르게 검토할 수 있는 체크리스트
• Topical Chapters — 각 가이드라인의 상세한 설명과 근거
3.2 네이밍과 타입
• 표준 명명 규칙 엄격 준수 (함수/변수: snake_case, 타입/트레이트: CamelCase, 상수: SCREAMING_SNAKE_CASE)
• get_ 접두사 사용 지양 — 필드 접근은 직접 노출, 계산형은 다른 이름 사용
• into_, as_, to_, from_ 변환 메서드의 일관된 의미: into_는 소유권 이전, as_는 저비용 참조 변환, to_는 일반 변환
• Error 타입은 std::error::Error를 구현하고 Display + Debug 제공
• Iterator, IntoIterator, FromIterator 구현으로 컬렉션 친화적 API 제공
3.3 안전성과 견고함
• unsafe 함수는 안전 불변성(invariant) 문서화 필수
• Panic 가능성이 있는 함수는 문서화하고, unchecked 변형 제공 고려
• Generic 인터페이스는 구체 타입의 편의성 래퍼와 함께 제공
• Builder 패턴으로 복잡한 객체 생성 단순화
3.4 사용성과 유연성
• 타입 소비자(consumer) 관점에서 API 설계
• &[T] 대신 &Vec<T>, &str 대신 &String 권장 — 더 일반적인 타입으로 받기
• impl Trait 반환으로 복잡한 제네릭 타입 숨기기
• Default, Clone, PartialEq, Debug 등 표준 트레이트 적극 구현
• Cargo features로 선택적 기능 제공, default features 최소화
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. 실전활용
• 오픈소스 크레이트 배포 전 API 리뷰 체크리스트로 활용
• 팀 낼부 라이브러리 개발 표준 수립
• 표준 라이브러리 스타일과의 일관성 유지로 사용자 학습 곡선 감소
• semver 호환성 유지를 위한 API 변경 관리
• clippy와 함께 사용하여 자동으로 가이드라인 준수 검증
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. 정리
Rust API Guidelines는 Rust 생태계의 품질과 일관성을 높이는 데 기여하는 중요한 문서입니다. 강제 규칙이 아닌 권장사항으로서, 크레이트 작성자는 상황에 맞게 적용하면 됩니다. 하지만 이 가이드라인을 따르는 API는 사용자에게 더 익숙하고 예측 가능한 경험을 제공하며, Rust 커뮤니티의 공통 언어(common language)를 형성하는 데 도움이 됩니다. 공개 크레이트를 개발할 때는 특히 이 가이드라인을 참고하는 것이 좋습니다.

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30