- 들어가며
- 1. 인사하기
❱
- 1.1. 코멘트
- 1.2. 형식을 지정하는 출력
❱
- 1.2.1. 디버그
- 1.2.2. Display
❱
- 1.2.2.1. 테스트 케이스: List
- 1.2.3. 출력 형식
- 2. 기본 자료형
❱
- 2.1. 변수와 연산자
- 2.2. 튜플
- 2.3. 배열과 슬라이스
- 3. 사용자 정의 자료형
❱
- 3.1. 구조체
- 3.2. 열거형
❱
- 3.2.1. use
- 3.2.2. C언어처럼 활용하기
- 3.2.3. 테스트 케이스: linked list
- 3.3. 상수
- 4. 변수 바인딩
❱
- 4.1. 수정 가능성
- 4.2. 스코프와 섀도잉
- 4.3. 우선 선언하기
- 4.4. 프리징
- 5. 자료형
❱
- 5.1. 캐스팅
- 5.2. 리터럴
- 5.3. 추적
- 5.4. 별명 붙이기
- 6. 형변환
❱
- 6.1. From과 Into
- 6.2. TryFrom과 TryInto
- 6.3. string으로, string에서
- 7. 표현식
- 8. 제어문
❱
- 8.1. if/else
- 8.2. loop
❱
- 8.2.1. 중첩과 라벨링
- 8.2.2. 반복문 안에서 리턴하기
- 8.3. while
- 8.4. for 반복문과 range
- 8.5. match
❱
- 8.5.1. 아이템 해체
❱
- 8.5.1.1. 튜플
- 8.5.1.2. 배열과 슬라이스
- 8.5.1.3. 열거형
- 8.5.1.4. 포인터와 참조형
- 8.5.1.5. 구조체
- 8.5.2. 가드
- 8.5.3. 바인딩
- 8.6. if let
- 8.7. let-else
- 8.8. while let
- 9. 함수
❱
- 9.1. 메서드
- 9.2. 클로저
❱
- 9.2.1. 캡처링
- 9.2.2. 입력 파라미터로서
- 9.2.3. 타입 익명성
- 9.2.4. 파라미터에 함수 넣기
- 9.2.5. 출력 파라미터로서
- 9.2.6. std에서의 예시
❱
- 9.2.6.1. Iterator::any
- 9.2.6.2. Iterator에서 검색하기
- 9.3. 상위 순서의 함수
- 9.4. 리턴하지 않는 함수
- 10. 모듈
❱
- 10.1. 접근성
- 10.2. 구조체 접근성
- 10.3. use 선언문
- 10.4. super와 self
- 10.5. 파일 계층화
- 11. 크레이트(Crate)
❱
- 11.1. 라이브러리 만들기
- 11.2. 라이브러리 활용하기
- 12. 카고(Cargo)
❱
- 12.1. 의존성 관리
- 12.2. 관례
- 12.3. 테스트 관리
- 12.4. 빌드 스크립트
- 13. 속성
❱
- 13.1. dead_code
- 13.2. 크레이트
- 13.3. cfg
❱
- 13.3.1. 커스텀
- 14. 제네릭
❱
- 14.1. 함수
- 14.2. 구현
- 14.3. 트레잇
- 14.4. 바운딩
❱
- 14.4.1. 테스트 케이스: 빈 바운딩
- 14.5. 다중 바운딩
- 14.6. where 제한자
- 14.7. newtype 관용구
- 14.8. 연관된 아이템
❱
- 14.8.1. 문제점
- 14.8.2. 연관된 타입
- 14.9. 팬텀 타입 파라미터
❱
- 14.9.1. 테스트 케이스: unit clarification
- 15. 스코프 규칙
❱
- 15.1. RAII
- 15.2. 소유권과 그 이동
❱
- 15.2.1. 수정 가능성
- 15.2.2. 잠깐 옮기기
- 15.3. 빌리기
❱
- 15.3.1. 수정 가능성
- 15.3.2. 별명 달기
- 15.3.3. ref 패턴
- 15.4. 수명
❱
- 15.4.1. 명시하기
- 15.4.2. 함수
- 15.4.3. 메서드
- 15.4.4. 구조체
- 15.4.5. 트레잇
- 15.4.6. 바운딩
- 15.4.7. 억제
- 15.4.8. Static
- 15.4.9. 생략하기
- 16. 트레잇
❱
- 16.1. Derive
- 16.2. dyn 키워드로 동적 리턴하기
- 16.3. 연산자 오버로딩
- 16.4. Drop
- 16.5. Iterators
- 16.6. impl Trait
- 16.7. Clone
- 16.8. Supertraits
- 16.9. 중복 트레잇을 명확하게 호출하기
- 17. macro_rules!
❱
- 17.1. 문법
❱
- 17.1.1. 설계자
- 17.1.2. 오버로딩
- 17.1.3. 반복하기
- 17.2. DRY (반복하지 마세요)
- 17.3. DSL (도메인-특정 언어)
- 17.4. 길이 불특정 인터페이스
- 18. 오류 다루기
❱
- 18.1. panic
- 18.2. abort & unwind
- 18.3. Option & unwrap
❱
- 18.3.1. option을 ?로 해체하기
- 18.3.2. 조합자: map
- 18.3.3. 조합자: and_then
- 18.3.4. 기본 작업: or, or_else, get_or_insert, get_or_insert_with
- 18.4. Result
❱
- 18.4.1. map for Result
- 18.4.2. Result의 별칭
- 18.4.3. 빠르게 리턴하기
- 18.4.4. ?를 소개합니다
- 18.5. 여러 오류 타입
❱
- 18.5.1. Option에서 Result 추출하기
- 18.5.2. 오류 타입 지정하기
- 18.5.3. 오류를 box에 넣기
- 18.5.4. ?의 다른 용도
- 18.5.5. 오류 감싸기
- 18.6. Results로 반복하기
- 19. std 라이브러리 타입
❱
- 19.1. Box, stack과 heap
- 19.2. 벡터
- 19.3. 문자열
- 19.4. Option
- 19.5. Result
❱
- 19.5.1. ?
- 19.6. panic!
- 19.7. HashMap
❱
- 19.7.1. 대체/커스텀 키 타입
- 19.7.2. HashSet
- 19.8. Rc
- 19.9. Arc
- 20. std 라이브러리 잡동사니
❱
- 20.1. Threads
❱
- 20.1.1. 테스트 케이스: map-reduce
- 20.2. Channels
- 20.3. Path
- 20.4. 파일 입출력
❱
- 20.4.1. open
- 20.4.2. create
- 20.4.3. read lines
- 20.5. 하위 프로세스
❱
- 20.5.1. Pipes
- 20.5.2. Wait
- 20.6. 파일 시스템 작업
- 20.7. 프로그램 변수
❱
- 20.7.1. 변수 파싱하기
- 20.8. 외부 함수 인터페이스
- 21. 테스트하기
❱
- 21.1. 유닛 단위 테스트
- 21.2. 문서 테스트
- 21.3. 복합 작업 테스트
- 21.4. Dev-dependencies
- 22. Unsafe한 작업
❱
- 22.1. 인라인 어셈블리
- 23. 호환성
❱
- 23.1. 원본 식별자
- 24. 메타데이터
❱
- 24.1. 문서화하기
- 24.2. 플레이펜