PHpullh
심층 가이드/Rust/기초 문법

RUST · 심층 가이드

Rust 기초 문법 완전 정리

불변이 기본인 변수, 망라성을 요구하는 match, null이 없는 자리를 채우는 Option까지 Rust 문법의 기본기를 20개 예제로 다집니다.

주제 20개 · 예제 코드 포함 · 최종 수정 2026-08-30 · 작성 pullh 편집팀

Rust에서 let은 상수 선언에 가깝습니다. 값을 바꾸려면 mut를 명시해야 하고, 같은 이름을 다시 쓰는 섀도잉은 변경이 아니라 새 바인딩을 만드는 별개의 문법입니다. 조건문과 반복문도 문(statement)이 아니라 값을 내는 식(expression)이라, if의 결과를 그대로 변수에 담습니다. 세미콜론 하나를 붙이고 떼는 것이 반환값의 유무를 가르는 언어라는 점부터 몸에 익히는 편이 빠릅니다.

숫자 변수 선언문자열 상수 선언에서 타입 추론의 범위를 확인한 다음 if else 분기로 넘어가면, switch 또는 match 사용에서 왜 컴파일러가 모든 갈래를 요구하는지 이해가 됩니다. 그 망라성 검사가 실제로 쓸모를 발휘하는 곳이 null 기본값 처리입니다. 값이 없을 수 있다는 사실이 타입에 적혀 있으니 빠뜨릴 수가 없습니다. 타입 변환은 이 흐름을 마무리하며 암묵적 형변환이 없는 이유를 보여줍니다.

문자열 길이 구하기에서 자주 걸립니다. len()이 돌려주는 값은 문자 수가 아니라 UTF-8 바이트 수라서 한글 한 글자가 3을 더합니다. 사람이 세는 글자 수가 필요하면 chars().count()를 쓰고, 그마저도 결합 문자까지 고려하면 정답이 아닙니다. 같은 이유로 s[0] 같은 인덱싱은 아예 막혀 있습니다. 바이트 경계를 쪼개는 슬라이싱을 하면 컴파일은 통과해도 실행 중에 패닉이 납니다.

01숫자 변수 선언

Rust에서 숫자 변수 선언 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 숫자 변수 선언
fn main() {
    let count = 1;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

02문자열 상수 선언

Rust에서 문자열 상수 선언 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 문자열 상수 선언
fn main() {
    let mut values = vec![3, 1, 4, 2];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

03불리언 플래그 만들기

Rust에서 불리언 플래그 만들기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 불리언 플래그 만들기
fn main() {
    let count = 3;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

04문자열 길이 구하기

Rust에서 문자열 길이 구하기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 문자열 길이 구하기
fn main() {
    let mut values = vec![3, 1, 4, 4];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

05문자열 정리하기

Rust에서 문자열 정리하기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 문자열 정리하기
fn main() {
    let count = 5;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

06숫자 합계 계산

Rust에서 숫자 합계 계산 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 숫자 합계 계산
fn main() {
    let mut values = vec![3, 1, 4, 6];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

07나머지 연산 확인

Rust에서 나머지 연산 확인 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 나머지 연산 확인
fn main() {
    let count = 7;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

08if else 분기

Rust에서 if else 분기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// if else 분기
fn main() {
    let mut values = vec![3, 1, 4, 8];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

09switch 또는 match 사용

Rust에서 switch 또는 match 사용 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// switch 또는 match 사용
fn main() {
    let count = 9;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

10null 기본값 처리

Rust에서 null 기본값 처리 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// null 기본값 처리
fn main() {
    let mut values = vec![3, 1, 4, 10];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

11삼항 연산자 사용

Rust에서 삼항 연산자 사용 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 삼항 연산자 사용
fn main() {
    let count = 11;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

12for 반복문

Rust에서 for 반복문 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// for 반복문
fn main() {
    let mut values = vec![3, 1, 4, 12];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

13while 누적 계산

Rust에서 while 누적 계산 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// while 누적 계산
fn main() {
    let count = 13;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

14break 와 continue

Rust에서 break 와 continue 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// break 와 continue
fn main() {
    let mut values = vec![3, 1, 4, 14];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

15배열 생성과 순회

Rust에서 배열 생성과 순회 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 배열 생성과 순회
fn main() {
    let count = 15;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

16맵 또는 객체 생성

Rust에서 맵 또는 객체 생성 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 맵 또는 객체 생성
fn main() {
    let mut values = vec![3, 1, 4, 16];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

17정렬 기초

Rust에서 정렬 기초 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 정렬 기초
fn main() {
    let count = 17;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

18튜플 또는 페어 사용

Rust에서 튜플 또는 페어 사용 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 튜플 또는 페어 사용
fn main() {
    let mut values = vec![3, 1, 4, 18];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

19타입 변환

Rust에서 타입 변환 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 타입 변환
fn main() {
    let count = 19;
    let label = if count > 5 { "big" } else { "small" };
    println!("{}", label);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

20날짜 문자열 만들기

Rust에서 날짜 문자열 만들기 개념을 코드로 빠르게 확인하는 기초 문법 예제입니다.

Rust code

// 날짜 문자열 만들기
fn main() {
    let mut values = vec![3, 1, 4, 20];
    values.sort();
    println!("{:?}", values);
}
알아두면 좋은 점

기초 문법은 값을 조금씩 바꿔 보면서 타입과 출력이 어떻게 달라지는지 확인하는 편이 좋습니다.

자주 하는 실수

값과 타입이 언제 바뀌는지 놓치면 조건문과 반복문에서 예상과 다른 결과가 나오기 쉽습니다.

정리하며

  • 변경이 필요한 변수에만 mut를 붙이고 나머지는 불변으로 둡니다
  • match는 모든 갈래를 쓰고, _ 와일드카드는 정말 필요할 때만 씁니다
  • 문자열 길이는 목적에 따라 len()과 chars().count()를 구분해 씁니다
  • 정수 오버플로는 디버그 빌드에서 패닉이므로 릴리스 동작과 함께 확인합니다

더 깊이 들어가고 싶다면 Rust 학습 라이브러리에서 다른 주제 가이드를 이어서 보거나, 언어 비교에서 같은 개념이 다른 언어에서 어떻게 표현되는지 확인해 보세요.