콘텐츠로 이동

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 값을 대여해요 / 가변으로 대여해요 (대여)
메서드 하는 일
.len() 바이트 단위 길이
.trim() 앞뒤 공백 제거
.to_uppercase() / .to_lowercase() 대문자 / 소문자로 변환
.contains(pat) 부분 문자열이나 패턴이 들어 있는지 확인
.replace(from, to) 일치하는 부분을 모두 바꾸기
.push_str(s) &str을 뒤에 붙이기
.push(c) char 하나를 뒤에 붙이기
.chars() 문자 하나씩 반복
.split(pat) 나눠서 부분 문자열의 반복자로 만들기
.parse::<T>() 텍스트를 다른 타입으로 변환 (Result를 돌려줘요)

자세한 설명과 예제는 문자열 페이지를 보세요.

메서드 하는 일
.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 페이지를 보세요.

메서드 쓸 수 있는 타입 하는 일
.unwrap() 둘 다 값을 꺼내요. None/Err면 패닉해요
.expect("msg") 둘 다 .unwrap()과 같지만 패닉 메시지를 직접 정해요
.unwrap_or(default) 둘 다 값을 꺼내거나, 없으면 대신 쓸 값을 돌려줘요
.is_some() / .is_none() Option 어느 배리언트인지 확인해요
.is_ok() / .is_err() Result 어느 배리언트인지 확인해요
? 둘 다 None/Err면 바로 반환해요

자세한 설명과 예제는 Option, Result 페이지를 보세요.

지정자 출력하는 것
{} 일반 출력 (Display 트레이트가 필요해요)
{:?} 디버그 형식
{:#?} 보기 좋게 정리한 디버그 형식
{:.2} 소수점 아래 2자리
{:5} 너비 5로 맞추기
{name} name이라는 변수를 바로 넣기

자세한 설명과 예제는 출력 페이지를 보세요.

명령어 하는 일
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와 크레이트를 보세요.