- Rust 프로그래밍 언어
- 서문
- 소개
- 1. 시작하기
- 1.1. 설치
- 1.2. Hello, World!
- 1.3. Hello, Cargo!
- 2. 숫자 맞추기 게임 프로그래밍
- 3. 일반적인 프로그래밍 개념
- 3.1. 변수와 가변성
- 3.2. 데이터 타입
- 3.3. 함수
- 3.4. 주석
- 3.5. 제어 흐름
- 4. 소유권 이해하기
- 4.1. 소유권이란?
- 4.2. 참조와 빌림
- 4.3. 슬라이스 타입
- 5. 관련 데이터를 구조화하기 위해 구조체 사용하기
- 5.1. 구조체 정의와 인스턴스화
- 5.2. 구조체를 사용한 예제 프로그램
- 5.3. 메서드 문법
- 6. 열거형과 패턴 매칭
- 6.1. 열거형 정의하기
- 6.2. match 제어 흐름 구조
- 6.3. if let과 let else를 사용한 간결한 제어 흐름
- 7. 패키지, 크레이트, 모듈로 프로젝트 관리하기
- 7.1. 패키지와 크레이트
- 7.2. 모듈 정의로 스코프와 접근 제어 관리하기
- 7.3. 모듈 트리 내 아이템 참조 경로
- 7.4. use 키워드로 경로를 스코프로 가져오기
- 7.5. 모듈을 다른 파일로 분리하기
- 8. 컬렉션 다루기
- 8.1. 벡터로 값 목록 저장하기
- 8.2. UTF-8 인코딩 텍스트를 문자열로 저장하기
- 8.3. 해시 맵으로 키와 연관된 값 저장하기
- 9. 에러 처리
- 9.1. panic!으로 복구 불가능한 에러 처리하기
- 9.2. Result로 복구 가능한 에러 처리하기
- 9.3. panic!을 사용할지 말지 결정하기
- 10. 제네릭 타입, 트레이트, 라이프타임
- 10.1. 제네릭 데이터 타입
- 10.2. 트레이트: 공유 동작 정의하기
- 10.3. 라이프타임으로 참조 유효성 검사하기
- 11. 자동화된 테스트 작성하기
- 11.1. 테스트 작성 방법
- 11.2. 테스트 실행 방식 제어하기
- 11.3. 테스트 조직화
- 12. I/O 프로젝트: 커맨드라인 프로그램 만들기
- 12.1. 커맨드라인 인수 받기
- 12.2. 파일 읽기
- 12.3. 모듈성과 에러 처리를 개선하기 위한 리팩토링
- 12.4. 테스트 주도 개발로 라이브러리 기능 확장하기
- 12.5. 환경 변수 다루기
- 12.6. 에러 메시지를 표준 출력 대신 표준 에러로 출력하기
- 13. 함수형 언어 기능: 이터레이터와 클로저
- 13.1. 클로저: 환경을 캡처하는 익명 함수
- 13.2. 일련의 항목을 이터레이터로 처리하기
- 13.3. I/O 프로젝트 개선하기
- 13.4. 성능 비교: 루프 vs 이터레이터
- 14. Cargo와 Crates.io에 대한 추가 정보
- 14.1. 릴리스 프로필로 빌드 커스터마이징
- 14.2. Crates.io에 크레이트 게시하기
- 14.3. Cargo 작업 공간
- 14.4. cargo install로 Crates.io에서 바이너리 설치하기
- 14.5. 커스텀 커맨드로 Cargo 확장하기
- 15. 스마트 포인터
- 15.1. Box<T>로 힙 데이터 가리키기
- 15.2. Deref로 스마트 포인터를 일반 참조처럼 다루기
- 15.3. Drop 트레이트로 정리 시 코드 실행하기
- 15.4. Rc<T>, 참조 카운트 스마트 포인터
- 15.5. RefCell<T>와 내부 가변성 패턴
- 15.6. 참조 순환으로 인한 메모리 누수
- 16. 두려움 없는 동시성
- 16.1. 스레드를 사용해 코드 동시 실행하기
- 16.2. 메시지 전달로 스레드 간 데이터 전송하기
- 16.3. 공유 상태 동시성
- 16.4. Send와 Sync 트레이트로 확장 가능한 동시성
- 17. 비동기 프로그래밍의 기초: Async, Await, Futures, Streams
- 17.1. Futures와 Async 문법
- 17.2. Async로 동시성 적용하기
- 17.3. 여러 Futures 다루기
- 17.4. Streams: 순차적인 Futures
- 17.5. Async 트레이트 자세히 살펴보기
- 17.6. Futures, Tasks, Threads
- 18. Rust의 객체 지향 프로그래밍 기능
- 18.1. 객체 지향 언어의 특징
- 18.2. 다양한 타입의 값을 허용하는 트레이트 객체 사용하기
- 18.3. 객체 지향 디자인 패턴 구현하기
- 19. 패턴과 매칭
- 19.1. 패턴을 사용할 수 있는 모든 곳
- 19.2. 반증 가능성: 패턴이 매칭에 실패할 가능성
- 19.3. 패턴 문법
- 20. 고급 기능
- 20.1. 안전하지 않은 Rust
- 20.2. 고급 트레이트
- 20.3. 고급 타입
- 20.4. 고급 함수와 클로저
- 20.5. 매크로
- 21. 최종 프로젝트: 멀티스레드 웹 서버 구축
- 21.1. 단일 스레드 웹 서버 구축
- 21.2. 단일 스레드 서버를 멀티스레드 서버로 변환
- 21.3. 우아한 종료와 정리
- 22. 부록
- 22.1. A - 키워드
- 22.2. B - 연산자와 기호
- 22.3. C - 파생 가능한 트레이트
- 22.4. D - 유용한 개발 도구
- 22.5. E - 에디션
- 22.6. F - 책의 번역
- 22.7. G - Rust의 제작 과정과 "Nightly Rust"