Comprehensive Rust에 오신 것을 환영합니다 🦀
1.
강의 진행
❱
1.1.
강의 구성
1.2.
단축키
1.3.
다른 언어들
2.
카고 사용하기
❱
2.1.
러스트 생태계
2.2.
코드 샘플
2.3.
카고(Cargo) 수행하기
1일차 오전
3.
개요
4.
Hello World!
❱
4.1.
러스트란?
4.2.
Rust의 이점
4.3.
플레이그라운드
5.
타입 및 값
❱
5.1.
Hello World!
5.2.
변수
5.3.
값
5.4.
연산
5.5.
문자열
5.6.
타입 추론
5.7.
연습문제: 피보나치
❱
5.7.1.
해답
6.
흐름 제어
❱
6.1.
if 표현식
6.2.
배열과 for 반복문
❱
6.2.1.
배열과 for 반복문
6.2.2.
loop
6.3.
break와 continue
❱
6.3.1.
Labels
6.4.
블록 및 범위
❱
6.4.1.
범위(Scopes)와 쉐도잉(Shadowing)
6.5.
함수
6.6.
매크로
6.7.
연습문제: 콜라츠 수열
❱
6.7.1.
해답
1일차 오후
7.
개요
8.
튜플 및 배열
❱
8.1.
배열
8.2.
튜플
8.3.
Cargo에 통합됨
8.4.
열거형 분해(역구조화)
8.5.
연습문제: 중첩 배열
❱
8.5.1.
해답
9.
참조
❱
9.1.
공유 참조
9.2.
허상(dangling) 참조
9.3.
연습문제: 도형
❱
9.3.1.
해답
10.
사용자 정의 타입
❱
10.1.
구조체
10.2.
튜플
10.3.
열거형
10.4.
정적변수(static)와 상수(const)
10.5.
타입 별칭
10.6.
연습문제: 엘리베이터 이벤트
❱
10.6.1.
해답
2일차 오전
11.
개요
12.
패턴 매칭
❱
12.1.
Matching Values
12.2.
열거형 분해(역구조화)
12.3.
흐름 제어
12.4.
연습문제: 표현식 평가
❱
12.4.1.
해답
13.
메소드와 트레이트
❱
13.1.
메서드
13.2.
트레잇(Trait)
❱
13.2.1.
안전하지 않은 트레잇 구현하기
13.2.2.
트레잇(Trait)
13.2.3.
공유 타입
13.3.
트레잇 상속하기
13.4.
연습문제: 일반 min
❱
13.4.1.
해답
14.
제네릭
❱
14.1.
외부(다른언어) 함수들
14.2.
제네릭 데이터 타입
14.3.
제네릭
14.4.
제네릭 타입 제한(트레잇 경계)
14.5.
트레잇 구현하기(impl Trait)
14.6.
연습문제: 일반 min
❱
14.6.1.
해답
2일차 오후
15.
개요
16.
표준 라이브러리
❱
16.1.
표준 라이브러리
16.2.
문서화주석 테스트
16.3.
Duration
16.4.
Option, Result
16.5.
String
16.6.
Vec
16.7.
HashMap
16.8.
연습문제: 카운터
❱
16.8.1.
해답
17.
표준 라이브러리
❱
17.1.
비교
17.2.
Iterators
17.3.
From과 Into
17.4.
테스트
17.5.
Read와 Write
17.6.
Default, 구조체 업데이트 문법
17.7.
클로저(Closure)
17.8.
연습문제: 바이너리 트리
❱
17.8.1.
해답
3일차 오전
18.
개요
19.
메모리 관리
❱
19.1.
프로그램 메모리 검토
19.2.
자동 메모리 관리
19.3.
소유권
19.4.
Move 문법
19.5.
Clone
19.6.
복합 타입
19.7.
Drop
19.8.
연습문제: 빌드 타입
❱
19.8.1.
해답
20.
스마트 포인터
❱
20.1.
Box
20.2.
Rc
20.3.
트레잇 객체
20.4.
연습문제: 바이너리 트리
❱
20.4.1.
해답
3일차 오후
21.
개요
22.
빌림
❱
22.1.
빌림
22.2.
빌림
22.3.
상호운용성
22.4.
연습문제: 엘리베이터 이벤트
❱
22.4.1.
해답
23.
수명
❱
23.1.
Slices: &\[T\]
23.2.
허상(dangling) 참조
23.3.
함수 호출에서의 수명
23.4.
수명
23.5.
수명
23.6.
연습문제: Protobuf 파싱
❱
23.6.1.
해답
1일차 오전
24.
개요
25.
Iterators
❱
25.1.
Iterator
25.2.
IntoIterator
25.3.
FromIterator
25.4.
연습문제: 반복자 메서드 체이닝
❱
25.4.1.
해답
26.
모듈
❱
26.1.
모듈
26.2.
파일시스템 계층
26.3.
가시성
26.4.
use, super, self
26.5.
연습문제: GUI 라이브러리 모듈
❱
26.5.1.
해답
27.
테스트
❱
27.1.
테스트 모듈
27.2.
다른 프로젝트
27.3.
컴파일러 린트 및 Clippy
27.4.
룬 알고리즘
❱
27.4.1.
해답
1일차 오후
28.
개요
29.
오류처리
❱
29.1.
패닉
29.2.
Iterator
29.3.
묵시적 형변환
29.4.
Error
29.5.
From과 Into
29.6.
Result를 이용한 구조화된 오류처리
❱
29.6.1.
해답
30.
안전하지 않은 러스트
❱
30.1.
안전하지 않은 러스트
30.2.
원시 포인터 역참조(따라가기)
30.3.
정적 가변 변수
30.4.
Unions
30.5.
안전하지 않은 함수 호출
30.6.
안전하지 않은 트레잇 구현하기
30.7.
연습문제: FFI 래퍼(wrapper)
❱
30.7.1.
해답
안드로이드
31.
개요
32.
설치
33.
빌드 규칙
❱
33.1.
바이너리
33.2.
라이브러리
34.
AIDL
❱
34.1.
/\*\* 생일 서비스 인터페이스입니다. \*/
❱
34.1.1.
AIDL 인터페이스
34.1.2.
Service API
34.1.3.
AIDL 서버
34.1.4.
AIDL 서버
34.1.5.
배포
34.1.6.
클라이언트
34.1.7.
API 수정
34.1.8.
서비스 구현
34.2.
타입
❱
34.2.1.
Primitive Types
34.2.2.
배열
34.2.3.
트레잇 객체
34.2.4.
변수
34.2.5.
Sending Files
35.
테스트
❱
35.1.
GoogleTest
35.2.
모의 처리
36.
로깅
37.
상호운용성
❱
37.1.
C와의 상호운용성
❱
37.1.1.
Bindgen을 사용한 C호출
37.1.2.
C에서 러스트 호출
37.2.
C++와의 상호운용성
❱
37.2.1.
테스트 모듈
37.2.2.
Rust 브리지
37.2.3.
생성된 C++
37.2.4.
C++ 브리지
37.2.5.
공유 타입
37.2.6.
공유 Enum
37.2.7.
오류처리
37.2.8.
오류처리
37.2.9.
추가 타입
37.2.10.
Android용 빌드: C++
37.2.11.
Android용 빌드: Genrules
37.2.12.
Android용 빌드: Rust
37.3.
Java와의 상호운용성
38.
연습문제
Chromium
39.
개요
40.
설치
41.
Chromium 및 Cargo 생태계 비교
42.
정책
43.
빌드 규칙
❱
43.1.
안전하지 않은 러스트
43.2.
Chromium C++의 Rust 코드에 의존
43.3.
Visual Studio Code
43.4.
연습문제
44.
테스트
❱
44.1.
rust_gtest_interop Library
44.2.
GN Rules for Rust Tests
44.3.
chromium::import! Macro
44.4.
연습문제
45.
C와의 상호운용성
❱
45.1.
예제
45.2.
CXX 제한사항
45.3.
오류처리
❱
45.3.1.
오류처리
45.3.2.
오류처리
45.4.
Chromium에서 CXX 사용
45.5.
연습문제
46.
서드 파티 크레이트 추가
❱
46.1.
Cargo.toml 구성
46.2.
gnrt_config.toml 구성
46.3.
크레이트 다운로드
46.4.
gn 빌드 규칙 생성
46.5.
문제 해결
❱
46.5.1.
코드를 생성하는 스크립트 빌드
46.5.2.
C++를 빌드하거나 임의의 작업을 실행하는 스크립트 빌드
46.6.
크레이트에 따라 다름
46.7.
검토 및 분석
46.8.
Chromium 소스 코드에 체크인
46.9.
크레이트를 최신 상태로 유지
46.10.
연습문제
47.
총정리 - 연습문제
48.
연습문제 해답
Bare Metal 오전
49.
개요
50.
no_std
❱
50.1.
작은 예제
50.2.
alloc
51.
마이크로컨트롤러
❱
51.1.
원시 MMIO
51.2.
PAC
51.3.
HAL 크레이트
51.4.
보드 지원 크레이트
51.5.
Type State 패턴
51.6.
embedded-hal
51.7.
probe-rs, cargo-embed
❱
51.7.1.
디버깅
51.8.
다른 프로젝트
52.
연습문제
❱
52.1.
나침반
52.2.
해답
Bare Metal 오후
53.
애플리케이션 프로세서
❱
53.1.
Rust 수행 준비
53.2.
인라인 어셈블리
53.3.
MMIO
53.4.
UART 드라이버 작성
❱
53.4.1.
더 많은 트레잇
53.5.
더 나은 UART 드라이버
❱
53.5.1.
비트플래그
53.5.2.
더 많은 레지스터
53.5.3.
드라이버
53.5.4.
사용해 보기
53.6.
로깅
❱
53.6.1.
사용해 보기
53.7.
예외
53.8.
다른 프로젝트
54.
유용한 크레이트
❱
54.1.
zerocopy
54.2.
aarch64-paging
54.3.
buddy_system_allocator
54.4.
tinyvec
54.5.
회전
55.
안드로이드
❱
55.1.
vmbase
56.
연습문제
❱
56.1.
RTC 드라이버
56.2.
해답
동시성 오전
57.
개요
58.
스레드
❱
58.1.
범위 스레드(Scoped Threads)
59.
채널
❱
59.1.
무경계 채널
59.2.
경계 채널
60.
Send와 Sync
❱
60.1.
Send
60.2.
Sync
60.3.
예제
61.
상태 공유
❱
61.1.
Arc
61.2.
Mutex
61.3.
예제
62.
연습문제
❱
62.1.
식사하는 철학자들
62.2.
멀티스레드 링크 검사기
62.3.
해답
동시성 오후
63.
비동기 관련 기본사항
❱
63.1.
async/await
63.2.
Future
63.3.
비동기 런타임들
❱
63.3.1.
Tokio
63.4.
태스크
63.5.
비동기 채널
64.
흐름 제어
❱
64.1.
Join
64.2.
Select
65.
함정
❱
65.1.
Executor 블로킹 하기
65.2.
Pin
65.3.
비동기 트레잇
65.4.
취소
66.
연습문제
❱
66.1.
식사하는 철학자들
66.2.
채팅 애플리케이션
66.3.
해답
끝으로...
67.
감사인사
68.
용어집
69.
러스트 참고 자료
70.
도와주신 분들
Light
Rust
Coal
Navy
Ayu
Comprehensive Rust 🦀
English
Brazilian Portuguese (Português do Brasil)
Chinese Simplified (汉语)
Chinese Traditional (漢語)
Japanese (日本語)
Korean (한국어)
Farsi (فارسی)
Spanish (Español)
Ukrainian (українська)
AIDL
러스트는
안드로이드 인터페이스 정의 언어(AIDL)
를 지원합니다:
러스트 코드에서 기존 AIDL 서버를 호출 할 수 있습니다.
러스트에서 새로운 AIDL 서버를 생성할 수 있습니다.