[Rust 공식문서 한국어 정리] 101. Rust Default 트레이트 가이드
[Rust 공식문서 한국어 정리] 101. Rust Default 트레이트 가이드
원문 제목: Trait std::default::Default
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Default 트레이트가 제공하는 기본값 생성 메커니즘을 상세히 설명합니다.
구조체 필드의 기본값 초기화와 #[derive(Default)]의 동작을 학습합니다.
unwrap_or_default와 같은 메서드에서 Default가 활용되는 방식을 정리합니다.
컬렉션과 수치 타입의 기본값이 어떻게 정의되는지 다룹니다.
커스텀 타입에 Default를 수동 구현하는 방법과 설계 고려사항을 설명합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① default() — 타입의 기본값을 생성하는 메서드
② #[derive(Default)] — 필드 타입의 기본값으로 구조체 기본값 자동 생성
③ unwrap_or_default — None일 때 Default::default() 반환
④ 수치 기본값 — 정수는 0, 부동소수점은 0.0, bool은 false
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Default 트레이트는 타입에 대해 의미 있는 기본값을 제공합니다.
default() 메서드는 인자 없이 해당 타입의 기본 인스턴스를 반환합니다.
#[derive(Default)]를 사용하면 모든 필드가 Default를 구현한 구조체에 대해 자동으로 기본값을 생성합니다.
일부 필드만 수동 기본값을 지정하려면 #[default = "expr"] 속성을 사용합니다.
Option의 기본값은 None입니다.
Vec의 기본값은 빈 벡터입니다.
String의 기본값은 빈 문자열입니다.
HashMap의 기본값은 빈 해시맵입니다.
수치 타입의 기본값은 0 또는 0.0입니다.
bool의 기본값은 false입니다.
unwrap_or_default()는 Option이나 Result에서 값이 없을 때 Default를 반환합니다.
mem::take는 값을 Default::default()로 교체하고 이전 값을 반환합니다.
mem::replace는 주어진 값으로 교체하며 mem::take는 Default로 교체합니다.
Default는 Builder 패턴에서 초기 상태를 설정할 때 유용합니다.
구조체가 너무 많은 필드를 가지면 Default를 활용한 점진적 초기화가 코드 가독성을 높입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
구조체에 #[derive(Default)]를 붙여 편리한 기본 인스턴스를 제공합니다.
Option::unwrap_or_default로 None일 때 빈 컬렉션이나 0을 안전하게 얻습니다.
Builder 패턴의 build 메서드에서 나머지 필드를 Default로 채웁니다.
mem::take로 임시로 소유권을 이동시키고 원본은 기본값으로 초기화합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Default 트레이트는 타입의 기본 인스턴스 생성을 표준화합니다.
#[derive(Default)]로 대부분의 기본값 생성을 자동화할 수 있습니다.
unwrap_or_default와 mem::take 등 다양한 API와 연동됩니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/std/default/trait.Default.html
Default in std: https://doc.rust-lang.org/std/default/
#Rust #Default #기본값 #번역

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