C# 개발자를 위한 Rust 핵심 키워드 가이드
학습 목표: Rust의 주요 키워드를 익숙한 C# 개념과 매핑하여 빠르게 찾아볼 수 있는 참조 가이드를 제공합니다. 소유권, 가시성, 타입 정의 등 Rust 특유의 구문이 C#의 어떤 기능에 대응하는지 마스터합니다.
1. 가시성 및 접근 제어
C#의 접근 제한자는 클래스 중심이지만, Rust는 모듈 중심입니다.
| C# 접근 제한자 | Rust 대응물 | 설명 |
|---|---|---|
public | pub | 어디서든 접근 가능 |
private | (기본값, 키워드 없음) | 현재 모듈 내부에서만 접근 가능 |
internal | pub(crate) | 현재 크레이트(어셈블리) 내에서만 공개 |
protected | 대응물 없음 | 상속이 없으므로 필요치 않음 (보통 pub(super) 등 사용) |
2. 메모리 및 소유권 (가장 중요)
Rust의 키워드들은 단순히 값을 전달하는 것을 넘어 **권한(소유권)**을 제어합니다.
&T(불변 참조): C#의in또는readonly ref와 유사합니다. 읽기만 가능합니다.&mut T(가변 참조): C#의ref와 유사합니다. 수정이 가능하나, 동시에 오직 단 하나만 존재할 수 있습니다.move: 클로저(람다)가 외부 변수를 참조하는 대신 소유권을 가로챌 때 사용합니다.Box<T>: 데이터를 힙(Heap)에 할당합니다. C#의 모든 클래스 인스턴스가 내부적으로 수행하는 작업을 명시적으로 나타냅니다.
3. 타입 정의 및 구조
C#의 클래스와 인터페이스 모델이 Rust에서는 구조체와 트레이트로 분리됩니다.
| C# 개념 | Rust 키워드 | 설명 |
|---|---|---|
class / struct | struct | 데이터 필드 정의 |
interface | trait | 공통 동작(메서드) 정의 |
| (메서드 구현) | impl | 데이터(struct)에 기능(fn)을 붙임 |
enum | enum | 단순 상수가 아닌, 데이터를 포함할 수 있는 강력한 타입 |
using Alias = ... | type | 타입 별칭 정의 |
4. 제어 흐름 및 패턴 매칭
Rust의 match는 C#의 switch 표현식보다 훨씬 강력한 컴파일 타임 안전성을 제공합니다.
match: 모든 케이스를 처리했는지 컴파일러가 검사합니다. (C#의switch표현식과 유사)if let: 특정 패턴(예:Some)인 경우만 코드를 실행하고 싶을 때 쓰는 간결한 문법입니다.loop: 조건 없는 무한 루프입니다. (C#의while(true)대용)?(연산자): 에러 발생 시 즉시 반환(Early Return)하는 간결한 문법입니다. (C#의 복잡한try-catch전파 대용)
5. 기타 필수 키워드
Self: 구현 중인 타입 자체를 가리킵니다.self: 인스턴스 메서드의 첫 번째 인자로, C#의this에 해당합니다.dyn: 트레이트 객체를 나타내며, 런타임에 다형성(동적 디스패치)을 사용할 때 명시합니다.where: 제네릭 제약 조건을 가독성 좋게 선언할 때 사용합니다.
💡 C# 개발자를 위한 팁
Rust에서 mut이 없는 모든 변수는 C#의 const나 readonly보다 훨씬 강력한 불변성을 가집니다. "기본은 불변, 필요할 때만 가변(mut)"이라는 철학이 Rust 코드의 안전성을 지탱하는 핵심입니다.