본문 바로가기

교재 목차

소유권·대여·타입·트레이트·오류 처리에서 스마트 포인터·동시성까지 익히며 안전한 Rust 프로그램을 완성합니다.

Rust는 빠르면서도 메모리를 안전하게 다루는 프로그램을 쓰기 위한 시스템 프로그래밍 언어입니다. 가비지 컬렉터 없이도 이미 해제된 메모리를 가리키거나 여러 스레드가 같은 데이터를 동시에 바꾸는 실수를 컴파일러가 막아 주며, 그 바탕에는 값마다 소유자를 하나 두고 빌려 쓰는 범위를 검사하는 소유권 규칙이 있습니다. 처음에는 이 규칙 때문에 컴파일러 오류를 자주 만나지만, 오류가 무엇을 막으려는 것인지 읽을 수 있게 되면 그 오류가 설계를 고치는 안내가 됩니다. 이 교재는 러스트 프로젝트가 펴내는 공식 입문서 The Rust Programming Language(이하 공식 Book)의 흐름을 따라, 설치와 기본 문법에서 시작해 소유권과 오류 처리, 제네릭과 트레이트, 스마트 포인터와 동시성을 거쳐 멀티스레드 웹 서버를 만드는 데까지 이어집니다. 다른 프로그래밍 언어로 변수, 조건문, 반복문을 써 본 적이 있다면 충분합니다.

이 교재는 Rust 2024 에디션과 이 글을 쓰는 시점의 안정 버전인 Rust 1.99를 기준으로 하며, 명령은 Windows의 PowerShell과 macOS, Linux의 셸을 함께 적었습니다. 본문에 실은 출력과 컴파일러 메시지는 공식 Book과 표준 라이브러리, Cargo의 공식 문서에 실린 출력과, 그 문서에 적힌 동작에 따라 손으로 계산한 것이며, 실제로 실행해 맞춘 출력은 아닙니다. 패닉 메시지의 스레드 ID, 빌드에 걸린 시간, 실행 파일 이름의 해시처럼 실행할 때마다 달라지는 값이 있고, 컴파일러 메시지의 세부 형식은 버전에 따라 조금씩 달라질 수 있습니다. 코드를 읽을 때는 먼저 출력이나 오류를 예상한 뒤 본문과 비교하고, 둘이 다르면 어느 줄에서 달라졌는지 따라가 보세요.


학습 경로

1단계 · 시작과 기본 문법(0–2장)에서는 이 교재를 읽는 방법과 러스트를 소개한 들어가기에 앞서에서 시작해, rustup으로 러스트를 설치하고 Hello, World!를 컴파일하며 Cargo로 프로젝트를 만듭니다. 이어서 숫자 추리 게임을 만들며 러스트의 여러 문법을 한 번에 맛본 뒤, 변수와 가변성, 스칼라 타입과 복합 타입, 함수와 주석, if와 loop, while, for로 실행 흐름을 정합니다.

2단계 · 소유권과 데이터 구조(3–7장)에서는 스택과 힙, 이동과 복제로 소유권 규칙을 익히고, 참조와 대여, 슬라이스로 값을 빌려 쓰는 범위를 다룹니다. 이어서 구조체와 메서드, 열거형과 Option, match와 if let으로 데이터를 모델링하고, 패키지와 크레이트, 모듈로 커져 가는 코드를 정리한 뒤, 벡터와 문자열, 해시맵으로 여러 값을 저장합니다.

3단계 · 오류 처리와 추상화(8–10장)에서는 panic!과 Result로 복구할 수 없는 오류와 복구할 수 있는 오류를 나누어 다루고, 제네릭과 트레이트로 여러 타입에 동작하는 코드를 만들며, 라이프타임으로 참조가 유효한 범위를 컴파일러에게 알립니다. 마지막으로 유닛 테스트와 통합 테스트를 쓰고 실행 범위를 조절하는 방법을 익힙니다.

4단계 · 프로젝트와 함수형 기능(11–13장)에서는 파일에서 문자열을 찾는 명령줄 도구를 만들며 모듈 분리와 오류 처리, 테스트 주도 개발, 환경 변수, 표준 에러를 연습합니다. 이어서 클로저와 반복자로 그 도구를 다시 다듬고, 릴리스 프로필과 crates.io 배포, 작업공간, cargo install, 커스텀 명령으로 Cargo를 더 깊이 씁니다.

5단계 · 스마트 포인터와 동시성(14–15장)에서는 Box<T>, Deref, Drop, Rc<T>, RefCell<T>, Weak<T>로 힙의 데이터와 여러 소유자, 내부 가변성, 순환 참조를 다루고, 스레드와 채널, Mutex<T>와 Arc<T>, Send와 Sync로 겁 없는 동시성을 익힙니다. 공식 Book의 비동기 프로그래밍(async와 await) 장은 이 교재에 들어 있지 않으며, 15장의 마지막에서 Tokio로 태스크 하나를 실행해 보는 정도로만 다룹니다.

6단계 · 객체 지향, 패턴, 고급 기능(16–18장)에서는 러스트가 캡슐화와 트레이트 객체로 객체 지향의 특성을 어떻게 제공하는지 보고 상태 패턴을 두 가지 방식으로 구현합니다. 이어서 패턴을 쓸 수 있는 모든 곳과 패턴 문법을 정리하고, 안전하지 않은 러스트, 고급 트레이트와 타입, 함수 포인터, 매크로를 살펴봅니다.

7단계 · 최종 프로젝트와 부록(19장, 부록 A–G)에서는 TCP 연결을 받아 HTML을 돌려주는 웹 서버를 만들고, 스레드 풀로 여러 요청을 함께 처리한 뒤, 서버가 남은 작업을 마치고 우아하게 끝나도록 정리합니다. 부록에는 키워드, 연산자와 기호, 파생 가능한 트레이트, 개발 도구, 에디션, 추가 학습 자료, 러스트가 만들어지는 과정을 참고 자료로 모았습니다.

다른 교재로 이어가기

값이 메모리의 어디에 있고 언제 사라지는지를 프로그래머가 직접 다루는 다른 시스템 언어는 C++에서 비교해 볼 수 있습니다. 스택과 힙, 캐시가 하드웨어에서 어떻게 동작하는지는 컴퓨터구조에서, 스레드와 가상 메모리를 운영체제가 어떻게 관리하는지는 운영체제에서 다룹니다. 19장의 웹 서버가 쓰는 TCP와 HTTP는 네트워크에서, 반복자와 컬렉션으로 자료구조와 알고리즘을 구현하는 연습은 자료구조·알고리즘에서 이어집니다.


장별 목차

이 페이지 목차

이 페이지 목차