[Rust 공식문서 한국어 정리] 95. Rust From/Into 트레이트 가이드
[Rust 공식문서 한국어 정리] 95. Rust From/Into 트레이트 가이드
원문 제목: Trait std::convert::From
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
From과 Into 트레이트가 제공하는 타입 간 변환 메커니즘을 상세히 다룹니다.
두 트레이트의 역관계와 서로를 통해 자동으로 구현되는 원리를 학습합니다.
오류 타입 변환과 ? 연산자와의 연동 방식을 정리합니다.
안전한 변환과 TryFrom/TryInto의 차이점도 함께 설명합니다.
커스텀 타입에 From을 구현하여 타입 변환의 일관성을 높이는 방법을 다룹니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① From for B — A를 B로 변환하는 트레이트
② Into for A — A가 B로 변환될 수 있음을 표현
③ 역관계 구현 — From이 있으면 Into가 자동 구현됨
④ ? 연산과의 연동 — From으로 오류 타입 자동 변환
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
From 트레이트는 값을 소비하여 다른 타입으로 변환하는 메서드를 정의합니다.
from 메서드는 실패할 수 없는 변환을 수행하며 반환 타입은 목표 타입입니다.
From을 구현하면 자동으로 해당 타입의 Into가 구현됩니다.
따라서 일반적으로 From만 구현하면 Into도 사용할 수 있습니다.
Into는 제네릭 함수의 인자 타입에서 유연성을 제공하는 데 주로 사용됩니다.
예를 들어 fn foo>(x: T)처럼 다양한 타입을 받을 수 있습니다.
String::from("literal")은 &str에서 String으로 변환하는 From 구현입니다.
Vec::from([1,2,3])은 배열에서 Vec으로 변환하는 From 구현입니다.
? 연산자는 자동으로 From을 사용하여 반환 타입과 다른 오류를 변환합니다.
이를 통해 서로 다른 라이브러리의 오류 타입도 하나의 커스텀 오류로 통합할 수 있습니다.
From<&str> for MyError, From for MyError 등을 각각 구현합니다.
std::convert::From은 표준 라이브러리의 핵심 변환 트레이트입니다.
From과 TryFrom의 차이는 변환이 항상 성공하는가 여부입니다.
From은 보장된 변환이고 TryFrom은 실패할 수 있는 변환입니다.
AsRef와 From의 차이는 AsRef는 참조를 빌리고 From은 소유권을 이전합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
커스텀 오류 타입에 다양한 std::io::Error 등의 From을 구현합니다.
? 연산자로 다양한 오류를 자동으로 커스텀 오류로 변환합니다.
API 설계 시 Into을 받아 호출자에게 타입 유연성을 제공합니다.
Cfg, 테스트 픽스처 등에서 From 구현으로 깔끔한 초기화를 합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
From과 Into는 Rust의 기본 타입 변환 트레이트입니다.
From 하나만 구현하면 Into가 자동으로 제공됩니다.
오류 처리와 API 유연성 향상에 필수적인 트레이트입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/std/convert/trait.From.html
Into Trait: https://doc.rust-lang.org/std/convert/trait.Into.html
#Rust #From #Into #타입변환 #번역

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