Comprehensive Rust에 오신 것을 환영합니다 🦀
1.
강의 진행
❱
1.1.
강의 구성
1.2.
단축키
1.3.
다른 언어들
2.
카고 사용하기
❱
2.1.
러스트 생태계
2.2.
코드 샘플
2.3.
카고(Cargo) 수행하기
1일차 오전
3.
개요
❱
3.1.
러스트란?
4.
Hello World!
❱
4.1.
작은 예제
5.
러스트를 써야하는 이유
❱
5.1.
컴파일 시 보장되는 것들
5.2.
런타임 시 보장되는 것들
5.3.
현대적인 특징
6.
기본 문법
❱
6.1.
스칼라 타입
6.2.
복합 타입
6.3.
참조
❱
6.3.1.
허상(dangling) 참조
6.4.
슬라이스
❱
6.4.1.
String과 str
6.5.
함수
❱
6.5.1.
Rustdoc
6.5.2.
메서드
6.5.3.
오버로딩
7.
연습문제
❱
7.1.
묵시적 형변환
7.2.
배열과 for 반복문
1일차 오후
8.
흐름 제어
❱
8.1.
블록
8.2.
if 표현식
8.3.
for 표현식
8.4.
while 표현식
8.5.
break와 continue
8.6.
loop 표현식
9.
변수
❱
9.1.
타입 추론
9.2.
정적변수(static)와 상수(const)
9.3.
범위(Scopes)와 쉐도잉(Shadowing)
10.
열거형
❱
10.1.
데이터를 포함하는 열거형(Variant Payloads)
10.2.
열거형의 크기
11.
Novel Control Flow
❱
11.1.
if let 표현식
11.2.
while let 표현식
11.3.
match 표현식
12.
패턴 매칭
❱
12.1.
열거형 분해(역구조화)
12.2.
구조체 분해(역구조화)
12.3.
배열 분해(역구조화)
12.4.
매치 가드
13.
연습문제
❱
13.1.
룬 알고리즘
13.2.
패턴 매칭
2일차 오전
14.
개요
15.
메모리 관리
❱
15.1.
스택(Stack)과 힙(Heap)
15.2.
스택 메모리
15.3.
수동 메모리 관리
15.4.
범위기반 메모리 관리
15.5.
가비지 컬렉션
15.6.
러스트의 메모리 관리
16.
소유권
❱
16.1.
Move 문법
16.2.
러스트에서의 문자열 이동
❱
16.2.1.
Modern C++에서 이중해제 문제
16.3.
함수 호출에서의 이동(Move)
16.4.
복사와 복제
16.5.
빌림
❱
16.5.1.
공유와 고유 빌림
16.6.
수명
16.7.
함수 호출에서의 수명
16.8.
구조체에서의 수명
17.
구조체
❱
17.1.
튜플
17.2.
필드 할당 단축 문법
18.
메서드
❱
18.1.
메서드 리시버(Receiver)
18.2.
예제
19.
연습문제
❱
19.1.
책 저장하기
19.2.
건강상태 모니터링 시스템
2일차 오후
20.
표준 라이브러리
❱
20.1.
Option과 Result
20.2.
String
20.3.
Vec
20.4.
HashMap
20.5.
Box
❱
20.5.1.
재귀적 자료구조
20.5.2.
니치(틈새) 최적화(Niche Optimization)
20.6.
Rc
20.7.
Cell과 RefCell
21.
모듈
❱
21.1.
가시성
21.2.
경로
21.3.
파일시스템 계층
22.
연습문제
❱
22.1.
반복자와 소유권
22.2.
문자열과 반복자
3일차 오전
23.
개요
24.
제네릭
❱
24.1.
제네릭 데이터 타입
24.2.
제네릭 메서드
24.3.
단형화
25.
트레잇(Trait)
❱
25.1.
트레잇 객체
25.2.
트레잇 상속하기
25.3.
기본 메서드
25.4.
제네릭 타입 제한(트레잇 경계)
25.5.
트레잇 구현하기
26.
중요한 트레잇
❱
26.1.
Iterator
26.2.
FromIterator
26.3.
From과 Into
26.4.
Read와 Write
26.5.
Drop
26.6.
Default
26.7.
연산자: Add, Mul, ...
26.8.
클로저: Fn, FnMut, FnOnce
27.
연습문제
❱
27.1.
간단한 GUI 라이브러리
27.2.
점과 다각형
3일차 오후
28.
오류처리
❱
28.1.
패닉
❱
28.1.1.
스택 되감기
28.2.
구조화된 오류처리
28.3.
'?'를 이용한 오류 전파
❱
28.3.1.
오류타입 변환
❱
28.3.1.1.
예제
28.3.2.
또다른 오류 열거형
28.3.3.
동적인 에러 타입
28.3.4.
오류에 상황정보 추가
29.
테스트
❱
29.1.
단위 테스트
29.2.
테스트 모듈
29.3.
문서화주석 테스트
29.4.
통합 테스트
29.5.
유용한 크레이트
30.
안전하지 않은 러스트
❱
30.1.
원시 포인터 역참조(따라가기)
30.2.
정적 가변 변수
30.3.
Unions
30.4.
안전하지 않은 함수 호출
❱
30.4.1.
안전하지 않은 함수 작성하기
30.4.2.
외부(다른언어) 함수들
30.5.
안전하지 않은 트레잇 구현하기
31.
연습문제
❱
31.1.
FFI래퍼
안드로이드
32.
개요
33.
설치
34.
빌드 규칙
❱
34.1.
바이너리
34.2.
라이브러리
35.
AIDL
❱
35.1.
AIDL 인터페이스
35.2.
서비스 구현
35.3.
AIDL 서버
35.4.
배포
35.5.
클라이언트
35.6.
API 수정
36.
로깅
37.
상호운용성
❱
37.1.
C와의 상호운용성
❱
37.1.1.
Bindgen을 사용한 C호출
37.1.2.
C에서 러스트 호출
37.2.
C++와의 상호운용성
37.3.
Java와의 상호운용성
38.
연습문제
Bare Metal 오전
39.
개요
40.
no_std
❱
40.1.
작은 예제
40.2.
alloc
41.
마이크로컨트롤러
❱
41.1.
원시 MMIO
41.2.
PAC
41.3.
HAL 크레이트
41.4.
보드 지원 크레이트
41.5.
Type State 패턴
41.6.
embedded-hal
41.7.
progo-rs, cargo-embed
❱
41.7.1.
디버깅
41.8.
다른 프로젝트
42.
연습문제
❱
42.1.
나침반
Bare Metal 오후
43.
애플리케이션 프로세서
❱
43.1.
Rust 수행 준비
43.2.
인라인 어셈블리
43.3.
MMIO
43.4.
UART 드라이버 작성
❱
43.4.1.
더 많은 트레잇
43.5.
더 나은 UART 드라이버
❱
43.5.1.
비트플래그
43.5.2.
더 많은 레지스터
43.5.3.
드라이버
43.5.4.
사용해 보기
43.6.
로깅
❱
43.6.1.
사용해 보기
43.7.
예외
43.8.
다른 프로젝트
44.
유용한 크레이트
❱
44.1.
zerocopy
44.2.
aarch64-paging
44.3.
buddy_system_allocator
44.4.
tinyvec
44.5.
회전
45.
안드로이드
❱
45.1.
vmbase
46.
연습문제
❱
46.1.
RTC 드라이버
동시성 오전
47.
개요
48.
스레드
❱
48.1.
범위 스레드(Scoped Threads)
49.
채널
❱
49.1.
무경계 채널
49.2.
경계 채널
50.
Send와 Sync
❱
50.1.
Send
50.2.
Sync
50.3.
예제
51.
상태 공유
❱
51.1.
Arc
51.2.
Mutex
51.3.
예제
52.
연습문제
❱
52.1.
식사하는 철학자들
52.2.
멀티스레드 링크 검사기
동시성 오후
53.
비동기 관련 기본사항
❱
53.1.
async/await
53.2.
Future
53.3.
비동기 런타임들
❱
53.3.1.
Tokio
53.4.
태스크
53.5.
비동기 채널
54.
흐름 제어
❱
54.1.
Join
54.2.
Select
55.
함정
❱
55.1.
Executor 블로킹 하기
55.2.
Pin
55.3.
비동기 트레잇
55.4.
취소
56.
연습문제
❱
56.1.
식사하는 철학자들
56.2.
채팅 애플리케이션
끝으로...
57.
감사인사
58.
러스트 참고 자료
59.
도와주신 분들
해답
60.
해답
❱
60.1.
1일차 오전
60.2.
1일차 오후
60.3.
2일차 오전
60.4.
2일차 오후
60.5.
3일차 오전
60.6.
3일차 오후
60.7.
Bare Metal 오전
60.8.
전Bare Metal 오후
60.9.
동시성 오전
60.10.
동시성 오후
Light
Rust
Coal
Navy
Ayu
Comprehensive Rust 🦀
English
Brazilian Portuguese (Português do Brasil)
Chinese Simplified (汉语)
Chinese Traditional (漢語)
Korean (한국어)
Spanish (Español)
유용한 크레이트
bare-metal 프로그래밍의 몇 가지 일반적인 문제를 해결하는 크레이트를 살펴봅니다.