- The Rust Programming Language
- 들어가기에 앞서
- 소개
- 1. 시작해봅시다
- 1.1. 러스트 설치
- 1.2. Hello, World!
- 1.3. 카고를 사용해봅시다
- 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을 사용한 간결한 제어 흐름
- 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!이냐, 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. 카고와 Crates.io 더 알아보기
- 14.1. 릴리즈 프로필을 통한 빌드 커스터마이징하기
- 14.2. Crates.io에 크레이트 배포하기
- 14.3. 카고 작업공간
- 14.4. cargo install로 Crates.io에 있는 바이너리 설치하기
- 14.5. 커스텀 명령어로 카고 확장하기
- 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. Sync와 Send 트레이트를 이용한 확장 가능한 동시성
- 17. 러스트의 객체 지향 프로그래밍 기능들
- 17.1. 객체 지향 언어의 특성
- 17.2. 트레이트 객체를 사용하여 다른 타입의 값 허용하기
- 17.3. 객체 지향 디자인 패턴 구현하기
- 18. 패턴과 매칭
- 18.1. 패턴이 사용될 수 있는 모든 곳
- 18.2. 반박 가능성: 패턴이 매칭에 실패할지의 여부
- 18.3. 패턴 문법
- 19. 고급 기능
- 19.1. 안전하지 않은 러스트
- 19.2. 고급 트레이트
- 19.3. 고급 타입
- 19.4. 고급 함수와 클로저
- 19.5. 매크로
- 20. 최종 프로젝트: 멀티스레드 웹 서버 구축하기
- 20.1. 싱글스레드 웹 서버 구축하기
- 20.2. 싱글스레드 서버를 멀티스레드 서버로 바꾸기
- 20.3. 우아한 종료와 정리
- 21. 부록
- 21.1. A - 키워드
- 21.2. B - 연산자와 기호
- 21.3. C - 파생 가능한 트레이트
- 21.4. D - 유용한 개발 도구
- 21.5. E - 에디션
- 21.6. F - 번역본
- 21.7. G - 러스트가 만들어지는 과정과 ‘Nightly 러스트’