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 하나 또는 & 여러 개만 허용됩니다.
- •빌림은 소유자보다 오래 살 수 없습니다. 빌림이 살아있는 동안 소유자를 옮기거나 가변 변경할 수 없습니다.
이어서 해볼 도구
같은 흐름으로 이어지는 도구를 골라 두었습니다.
- WebAssembly 원리 & 만드는 법WebAssembly가 어떻게 동작하고 어떻게 만드는지 배우는 도구입니다. 스택 머신 시각화, 리틀 엔디언 선형 메모리 바이트 그리드, 모듈 구조 해부, Rust·C(Emscripten)·AssemblyScript·Go/TinyGo 컴파일 파이프라인을 눈으로 익혀보세요.
- Java 학습소Java의 핵심과 최신 기능을 예제로 배우는 학습 도구 — OOP, 제네릭·컬렉션, 스트림·람다, 동시성, 모던 Java(record·sealed·switch 패턴). 예제마다 미리 계산한 예상 출력과 3개 국어 설명을 제공합니다. 라이브 JVM은 아닙니다.
- WebAssembly 스튜디오WAT(WebAssembly Text)를 작성하면 브라우저에서 바로 바이너리로 컴파일하고, 헥사덤프·역어셈블을 확인하고, 실제로 실행까지 해보는 WebAssembly 학습 도구입니다. 기본·응용·심화 16개 샘플, 바이너리 구조 설명, 문법 치트시트를 제공합니다.
- JS 샌드박스 — 격리된 QuickJS에서 실행신뢰할 수 없는 JavaScript를 브라우저 안에서 안전하게 실행하세요. 브라우저의 eval()은 실행 시간·메모리를 제한할 수 없지만, WASM으로 컴파일된 QuickJS 엔진은 무한 루프 자동 중단(실행 시간 제한), 메모리 제한, 컨텍스트 격리, 호스트 함수 화이트리스트(capability 보안)를 제공합니다. 기본·응용·심화 예제로 클로저, 프로미스, 제너레이터부터 무한 루프·메모리 폭탄 방어까지 직접 체험하세요.