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 하나 또는 & 여러 개만 허용됩니다.
  • 빌림은 소유자보다 오래 살 수 없습니다. 빌림이 살아있는 동안 소유자를 옮기거나 가변 변경할 수 없습니다.