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