Rust 치트 시트
강의 전체를 다시 읽지 않고 빠르게 확인하고 싶은 것들을 모아 둔 페이지예요. 각 섹션에는 자세히 설명하는 페이지 링크가 달려 있어요.
키워드
섹션 제목: “키워드”| 키워드 | 뜻 |
|---|---|
let |
변수를 선언해요 (변수) |
mut |
변수나 참조자를 가변으로 만들어요 (변수) |
const |
상수를 선언해요 (변수) |
fn |
함수를 선언해요 (함수) |
struct |
구조체를 선언해요 (구조체) |
enum |
열거형을 선언해요 (열거형) |
impl |
타입에 메서드를 추가해요 (구조체, 트레이트) |
trait |
트레이트를 선언해요 (트레이트) |
match |
값에 패턴 매칭을 해요 (match) |
if let / while let |
패턴 하나만 매칭해요 (if let / while let) |
loop / while / for |
세 가지 반복문이에요 (loop, while, for) |
break / continue |
반복문을 제어해요 (break / continue) |
mod |
모듈을 선언해요 (모듈) |
pub |
항목을 모듈 밖에 공개해요 (모듈) |
use |
경로를 스코프로 가져와요 (모듈) |
unsafe |
원시 포인터처럼 개발자가 직접 안전을 책임지는 기능을 열어요 (unsafe) |
move |
클로저가 캡처한 값의 소유권을 가져가게 해요 (동시성) |
& / &mut |
값을 대여해요 / 가변으로 대여해요 (대여) |
자주 쓰는 String 메서드
섹션 제목: “자주 쓰는 String 메서드”| 메서드 | 하는 일 |
|---|---|
.len() |
바이트 단위 길이 |
.trim() |
앞뒤 공백 제거 |
.to_uppercase() / .to_lowercase() |
대문자 / 소문자로 변환 |
.contains(pat) |
부분 문자열이나 패턴이 들어 있는지 확인 |
.replace(from, to) |
일치하는 부분을 모두 바꾸기 |
.push_str(s) |
&str을 뒤에 붙이기 |
.push(c) |
char 하나를 뒤에 붙이기 |
.chars() |
문자 하나씩 반복 |
.split(pat) |
나눠서 부분 문자열의 반복자로 만들기 |
.parse::<T>() |
텍스트를 다른 타입으로 변환 (Result를 돌려줘요) |
자세한 설명과 예제는 문자열 페이지를 보세요.
자주 쓰는 Vec 메서드
섹션 제목: “자주 쓰는 Vec 메서드”| 메서드 | 하는 일 |
|---|---|
.push(x) |
끝에 추가 |
.pop() |
마지막 항목을 꺼내서 돌려주기 (Option) |
.remove(i) |
인덱스 i의 항목 제거 |
.len() |
항목 개수 |
.is_empty() |
벡터가 비어 있는지 확인 |
.get(i) |
안전한 인덱스 접근 (Option, 패닉하지 않아요) |
.iter() |
참조로 반복 |
.contains(&x) |
값이 들어 있는지 확인 |
.sort() |
제자리 정렬 |
.sort_by_key(|x| ...) |
필드나 계산한 키로 정렬 |
.dedup() |
연속된 중복 제거 (먼저 정렬하세요) |
자세한 설명과 예제는 벡터, 정렬과 검색, 반복자 페이지를 보세요.
어떤 컬렉션을 써야 할까?
섹션 제목: “어떤 컬렉션을 써야 할까?”| 타입 | 이럴 때 써요 |
|---|---|
Vec<T> |
순서가 있고 크기가 늘어나는 목록 |
HashMap<K, V> |
키로 값을 빠르게 찾을 때 |
HashSet<T> |
중복 없는 항목, “이게 들어 있나?“를 빠르게 확인할 때 |
BTreeMap<K, V> |
키 순서대로 정렬된 키-값 쌍 |
VecDeque<T> |
큐: 양쪽 끝에서 넣고 뺄 때 |
자세한 설명과 예제는 HashMap, HashSet과 BTreeMap 페이지를 보세요.
Option과 Result
섹션 제목: “Option과 Result”| 메서드 | 쓸 수 있는 타입 | 하는 일 |
|---|---|---|
.unwrap() |
둘 다 | 값을 꺼내요. None/Err면 패닉해요 |
.expect("msg") |
둘 다 | .unwrap()과 같지만 패닉 메시지를 직접 정해요 |
.unwrap_or(default) |
둘 다 | 값을 꺼내거나, 없으면 대신 쓸 값을 돌려줘요 |
.is_some() / .is_none() |
Option |
어느 배리언트인지 확인해요 |
.is_ok() / .is_err() |
Result |
어느 배리언트인지 확인해요 |
? |
둘 다 | None/Err면 바로 반환해요 |
자세한 설명과 예제는 Option, Result 페이지를 보세요.
형식 지정자 (println!, format!)
섹션 제목: “형식 지정자 (println!, format!)”| 지정자 | 출력하는 것 |
|---|---|
{} |
일반 출력 (Display 트레이트가 필요해요) |
{:?} |
디버그 형식 |
{:#?} |
보기 좋게 정리한 디버그 형식 |
{:.2} |
소수점 아래 2자리 |
{:5} |
너비 5로 맞추기 |
{name} |
name이라는 변수를 바로 넣기 |
자세한 설명과 예제는 출력 페이지를 보세요.
Cargo 명령어
섹션 제목: “Cargo 명령어”| 명령어 | 하는 일 |
|---|---|
cargo new name |
새 프로젝트 만들기 |
cargo run |
빌드하고 실행 |
cargo check |
빌드하지 않고 에러만 빠르게 확인 |
cargo test |
테스트 실행 |
cargo add crate |
의존성 추가 |
cargo fmt |
코드 포맷 정리 |
cargo clippy |
흔한 실수를 찾아 주는 린트 실행 |
cargo build --release |
최적화된 실행 파일 빌드 |
자세한 설명과 예제는 Cargo와 크레이트 페이지를 보세요.
범위 문법
섹션 제목: “범위 문법”| 문법 | 뜻 |
|---|---|
1..5 |
1부터 5 직전까지 (5는 포함하지 않아요) |
1..=5 |
1부터 5까지 (5도 포함해요) |
..3 |
처음부터 3 직전까지 |
2.. |
2부터 끝까지 |
.. |
전체 |
자세한 설명과 예제는 for, 슬라이스 페이지를 보세요.
인기 있는 크레이트
섹션 제목: “인기 있는 크레이트”| 필요한 것 | 크레이트 | 강의 |
|---|---|---|
| JSON(과 다른 형식) | serde + serde_json |
Serde로 JSON 다루기 |
| 비동기 코드, 타이머, 네트워킹 | tokio |
async/await |
| 명령줄 인터페이스 | clap |
clap으로 만드는 CLI 도구 |
| 간편한 에러 처리 | anyhow, thiserror |
anyhow와 thiserror |
| 난수 | rand |
난수 |
| 정규 표현식 | regex |
정규 표현식 |
| 날짜와 시간 | chrono |
날짜와 시간 |
| 로깅 | log + env_logger, tracing |
로깅 |
| 웹 서버 | axum |
Axum으로 만드는 웹 API |
모두 cargo add <크레이트>로 추가할 수 있어요. 좋은 크레이트를 고르는 방법은 Cargo와 크레이트를 보세요.
더 알아보기
섹션 제목: “더 알아보기”- Rust Language Cheat Sheet — cheats.rs: 문법부터 메모리 레이아웃까지 담은, 훨씬 자세한 한 페이지짜리 참고 자료예요 (영어).
- 부록 B: 연산자와 기호 — The Rust Programming Language 한국어판: Rust의 모든 연산자와 기호, 그리고 그 뜻을 한눈에 볼 수 있어요.
- std::fmt — 표준 라이브러리 문서:
println!과format!의 서식 문법(너비, 채우기, 정밀도 등) 전체를 볼 수 있어요 (영어). - Cargo 명령어 — The Cargo Book: 모든
cargo명령어와 옵션을 정리한 문서예요 (영어).