Rust 실전 가이드
Rust 소유권부터 트레이트, 비동기, 웹 개발까지
🦀 Rust 기초
Rust 시작하기 - 소유권, 구조체, 에러 처리
-
Rust 시작하기 | 메모리 안전한 시스템 프로그래밍 언어
rustup으로 Rust를 설치하고 cargo new로 Hello World를 실행한 뒤, Cargo.toml과 cargo check·build·run 차이, 변수와 함수, 소유권과 참조의 기본, 스칼라·복합 타입을 간단한 계산기 예제로 익힙니다.
-
Rust 소유권 | Ownership, Borrowing, Lifetime
Rust 소유권 세 가지 규칙, 함수 호출 시 소유권 이동과 반환, 불변 참조와 가변 참조의 빌림 규칙, 슬라이스, 함수·구조체의 라이프타임 애노테이션을 문자열 처리 예제로 설명하고 &String 대신 &str을 받는 이유를 짚습니다.
-
Rust 구조체와 열거형 | Struct, Enum, Pattern Matching
Rust 구조체·열거형·패턴 매칭을 정리합니다. 구조체 업데이트 문법의 이동 규칙, &self·&mut self·self 메서드, 데이터를 담는 enum, Option·Result와 ? 연산자, match 완전성 검사와 if let을 예제와 흔한 컴파일 에러로 설명합니다.
-
Rust 에러 처리 | Result, Option, ? 연산자
Rust에서 Result와 Option을 다루는 메서드와 체이닝, ? 연산자로 에러를 전파하는 법, panic!과 unwrap·expect를 써도 되는 경우, 커스텀 에러 타입과 에러 변환 패턴을 파일 파싱·입력 검증 예제로 설명합니다.
🔧 고급 기능
트레이트, 컬렉션, 동시성, 비동기
-
Rust 트레이트 | Trait, 제네릭, 트레이트 바운드
Rust 트레이트 정의와 기본 구현, 제네릭 함수·구조체, 트레이트 바운드와 where 절·impl Trait, 연관 타입과 제네릭 매개변수의 선택 기준, dyn Trait 트레이트 객체, derive와 Iterator·From·Display 구현을 예제로 다룹니다.
-
Rust 컬렉션 | Vec, HashMap, HashSet
Vec, HashMap, HashSet을 다루면서 push는 소유권을 넘기고 iter는 빌려 본다는 차이를 API별로 짚습니다. Entry API로 갱신과 삽입을 한 번에 처리하는 법, VecDeque·BTreeMap을 고르는 기준, capacity로 재할당을 줄이는 법도 다룹니다.
-
Rust 동시성 | Thread, Channel, Arc, Mutex
Rust 동시성 프로그래밍. thread::spawn과 move 클로저로 데이터 넘기기, 채널(mpsc)로 메시지 주고받기, Arc<Mutex<T>>로 상태 공유하기, 데이터를 청크로 나눈 병렬 계산 예제를 정리합니다.
-
Rust 비동기 프로그래밍 | async/await, Tokio
Rust async/await와 Future 트레이트의 동작 원리, Tokio 런타임에서 태스크 생성과 병렬 실행, reqwest로 타임아웃·재시도가 있는 HTTP 요청, async 코드에서 Mutex·RwLock·채널을 고르는 기준을 예제로 설명합니다.
🚀 실전 개발
웹 개발, 테스팅, CLI, C++ 비교
-
Rust 웹 개발 | Actix-web으로 REST API 만들기
Actix-web으로 Todo REST API를 만들며 CRUD 핸들러와 라우팅, 로깅·CORS·Bearer 토큰 인증 미들웨어, web::Data 공유 상태의 Mutex·RwLock 선택, 커스텀 에러 타입, sqlx 연결 풀, 테스트와 배포 설정을 다룹니다.
-
Rust 테스팅 | 단위 테스트, 통합 테스트, 벤치마크
Rust 테스트 작성법. #[test] 단위 테스트와 assert 매크로, should_panic, Result를 반환하는 테스트, tests/ 디렉토리의 통합 테스트와 공통 모듈 구성, 계산기 예제를 정리합니다.
-
Rust CLI 도구 만들기 | clap, 파일 처리, 에러 처리
Rust로 CLI 도구를 만들 때 clap derive로 인자와 서브커맨드를 파싱하고, 파일 읽기·쓰기와 에러 처리를 붙여 단어 카운터와 stdin·파일 입력을 받는 JSON 포맷터를 구현하며 main에서 unwrap을 피하는 이유를 설명합니다.
-
C++ 개발자를 위한 Rust | 차이점과 전환 가이드
C++ 개발자가 Rust로 넘어갈 때 RAII와 소유권, 복사 의미론과 이동 의미론, null 포인터와 Option, 예외와 Result, 스레드 공유 상태 처리 방식이 어떻게 다른지 코드로 비교하고 const std::string& 같은 관용구의 대응을 보여 줍니다.