Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

C# 개발자를 위한 Rust 핵심 키워드 가이드

학습 목표: Rust의 주요 키워드를 익숙한 C# 개념과 매핑하여 빠르게 찾아볼 수 있는 참조 가이드를 제공합니다. 소유권, 가시성, 타입 정의 등 Rust 특유의 구문이 C#의 어떤 기능에 대응하는지 마스터합니다.


1. 가시성 및 접근 제어

C#의 접근 제한자는 클래스 중심이지만, Rust는 모듈 중심입니다.

C# 접근 제한자Rust 대응물설명
publicpub어디서든 접근 가능
private(기본값, 키워드 없음)현재 모듈 내부에서만 접근 가능
internalpub(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 / structstruct데이터 필드 정의
interfacetrait공통 동작(메서드) 정의
(메서드 구현)impl데이터(struct)에 기능(fn)을 붙임
enumenum단순 상수가 아닌, 데이터를 포함할 수 있는 강력한 타입
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#의 constreadonly보다 훨씬 강력한 불변성을 가집니다. "기본은 불변, 필요할 때만 가변(mut)"이라는 철학이 Rust 코드의 안전성을 지탱하는 핵심입니다.