[Rust 공식문서 한국어 정리] ⑥. The Rust Edition Guide
[Rust 공식문서 한국어 정리] ⑥. The Rust Edition Guide
원문: https://doc.rust-lang.org/edition-guide/
#Rust #Rustlang #EditionGuide #공식문서
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 서론
The Rust Edition Guide는 Rust 언어의 "Edition" 시스템과 각 Edition에 포함된 변경사항을 설명하는 공식 가이드입니다. Edition은 Rust가 하위 호환성을 유지하면서도 언어를 발전시키는 독창적인 메커니즘으로, 이 가이드는 Edition의 개념부터 각 Edition별 변경사항, 그리고 기존 코드를 새 Edition으로 마이그레이션하는 방법을 다룹니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2. 핵심개념
• Edition: Rust가 하위 호환성 없는 변경을 도입하는 방법 — 2015, 2018, 2021, 2024 Edition
• Backward Compatibility: 동일한 코드베이스 내에서 서로 다른 Edition의 크레이트가 함께 컴파일됨
• Edition Migration: cargo fix를 통한 자동 마이그레이션과 수동 조정
• Idiom Lints: 새 Edition의 관용적 문법을 권장하는 경고(lint)
• Epoch: Edition의 구현 메커니즘으로 컴파일러 낭부의 문법/의미 파싱 전환
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. 주요내용상세
3.1 Edition이란?
Edition은 Rust 언어의 중대한 변경점을 관리하는 단위입니다. 하지만 기존 언어와 달리 Rust는 Edition 간에 완전한 하위 호환성을 유지합니다. 예를 들어, 2018 Edition으로 작성된 의존성 라이브러리를 2021 Edition 프로젝트에서 문제없이 사용할 수 있습니다. 이는 컴파일러가 각 크레이트의 Edition에 따라 별도의 파서와 의미 분석기를 사용하기 때문입니다.
3.2 2015 Edition (Rust 1.0)
최초의 안정화 Edition입니다. try! 매크로, extern crate 선언, 모듈 시스템의 상대 경로 등 초기 Rust 문법을 사용합니다.
3.3 2018 Edition (Rust 1.31)
다음과 같은 주요 변경사항이 도입되었습니다:
• Non-lexical lifetimes (NLL): 더 정확한 대여 검사로 컴파일 가능한 코드 확대
• Module system changes: mod.rs 없이 평면 모듈 구조 지원, extern crate 생략 가능
• Path clarity: use 절에서의 경로 해석 개선
• Uniform paths: use와 일반 경로에서의 일관된 경로 해석
• async/await 예약어 준비: async, await를 키워드로 예약
• raw identifiers: r# 키워드 이스케이프
• Slice patterns with ..: 슬라이스 패턴에서의 와일드카드 매칭
3.4 2021 Edition (Rust 1.56)
다음과 같은 변경사항이 포함되었습니다:
• Disjoint capture in closures: 클로저가 구조체 필드 단위로 캡처하여 불필요한 대여 충돌 감소
• Prefixes for integer literals: 0x, 0o, 0b 뒤의 _ 사용 허용 개선
• IntoIterator for arrays: 배열에 대한 직접 반복 가능
• Panic macro consistency: panic!의 일관된 형식 문자열 처리
• Reserving syntax: 보다 일반적인 문법 예약을 위한 준비
3.5 2024 Edition (Rust 1.85+)
가장 최신 Edition으로, Rust 언어의 지속적인 발전을 반영합니다:
• if let와 match의 일관성 향상
• Temp lifetime extension: 임시값의 수명 연장으로 더 직관적인 코드 작성
• repr(Rust) layout guarantees: Rust 타입의 레이아웃 보장 개선
• Gen blocks (coroutines): 제너레이터/코루틴 지원 준비
• unsafe extern blocks: 안전하지 않은 FFI 선언 구문 개선
3.6 마이그레이션
cargo fix --edition 명령으로 대부분의 Edition 변경사항을 자동으로 적용할 수 있습니다. 가이드는 각 변경사항에 대한 자동 수정 가능 여부와 수동 조정이 필요한 경우를 상세히 설명합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. 실전활용
• 프로젝트를 최신 Edition으로 업그레이드하여 새로운 기능과 개선사항 활용
• 레거시 크레이트의 Edition 마이그레이션 계획 수립 및 수행
• 팀 내 코딩 스타일 가이드에서 Edition 기준 설정
• CI 파이프라인에서 cargo fix --edition으로 자동 마이그레이션 검증
• 새로운 Rust 프로젝트 시작 시 항상 최신 Edition 선택
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. 정리
The Rust Edition Guide는 Rust의 하위 호환성을 유지하면서 언어를 발전시키는 독창적인 메커니즘인 Edition을 이해하는 데 필수적인 자료입니다. 각 Edition의 변경사항과 그 의미를 파악하면, 기존 코드를 안전하게 현대화하고 새로운 기능을 효과적으로 활용할 수 있습니다. Rust 생태계의 지속적인 발전을 따라가기 위한 필독 가이드입니다.

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