Skip to content
Tools/Rust 학습소

Rust 학습소

Rust Learning Lab

Rust의 어려운 부분을 인터랙티브하게 배웁니다 — 소유권·빌림 시각화, 라이프타임, 열거형·패턴 매칭, 트레잇·제네릭, 그리고 예상 출력이 담긴 단계별 예제 라이브러리. 실제 컴파일러는 돌리지 않고, 모든 결과와 rustc 스타일 에러를 학습용으로 미리 계산합니다.

코딩 실습

Rust의 어려운 부분(소유권·빌림·라이프타임·열거형·트레잇)을 브라우저에서 시각적으로 배우는 도구입니다. 실제 컴파일러를 돌리지 않습니다 — 규칙을 시뮬레이션하고, 단계별로 소유권을 보여주며, 미리 계산한 출력과 rustc 스타일 에러를 설명합니다.

⚠️ 이 도구는 실제 Rust 컴파일러를 실행하지 않습니다. 모든 출력과 에러 메시지는 학습용으로 미리 작성된 것이며, rustc의 실제 문구를 따르도록 만들었습니다.

값을 소유하는 것은 누구인가? 이동(move)이 일어나면 원본은 무효가 됩니다. 공유 빌림(&)은 여러 개, 가변 빌림(&mut)은 하나만 — 그리고 둘은 동시에 존재할 수 없습니다.

⚖️ 핵심 규칙: 한 번에 &mut 하나 XOR & 여러 개. 데이터 경합을 컴파일 타임에 막습니다.

단계 1 / 3
1fn main() {
2 let s1 = String::from("hello");
3 let s2 = s1; // s1 is MOVED into s2
4 println!("{}", s1); // error: s1 no longer valid
5}
2: s1이 "hello"를 소유합니다. 소유자는 s1 하나뿐입니다.

소유자 · 상태

s1(유효)

이 줄에서의 빌림

이동되어 더는 쓸 수 없는 변수살아있는 빌림

💡 핵심 개념

  • 각 값에는 소유자가 정확히 하나 있습니다. 소유자가 스코프를 벗어나면 값은 drop 됩니다.
  • String처럼 힙을 쓰는 타입을 대입/전달하면 이동(move)합니다 — 원본은 무효가 됩니다.
  • i32처럼 Copy 트레잇이 있는 타입은 이동이 아니라 복사됩니다 — 원본도 계속 유효합니다.
  • &T는 공유(불변) 빌림, &mut T는 배타(가변) 빌림. 같은 값에 &mut 하나 또는 & 여러 개만 허용됩니다.
  • 빌림은 소유자보다 오래 살 수 없습니다. 빌림이 살아있는 동안 소유자를 옮기거나 가변 변경할 수 없습니다.

같은 흐름으로 이어지는 도구를 골라 두었습니다.