
"TypeScript 쓰는데, Rust 한번 배워볼까?" 하고 공식 문서 열었다가 조용히 닫은 적 있으신가요?
저도 그랬습니다.
Rust는 요즘 실리콘밸리에서 굉장히 뜨고 있는 언어이자, 우주선까지 날릴 정도로 굉장히 좋은 언어입니다.
하지만 막상 공부하려니 대부분의 자료가 C/C++ 배경 개발자를 대상으로 쓰여 있었습니다.
"포인터를 이미 알고 있다"는 전제로 시작하는 설명은
Python -> TypeScript 테크르리를 탄 저한테는 꽤 높은 벽이었습니다.
Rust 학습 자료가 부족한 건 아닙니다. 저도 Rust-lang을 보면서 Rust에 대한 개념을 이해할 정도였으니까요
하지만 TypeScript 개발자 입장에서 겪는 어려움과 이를 비교해주는 자료는 찾기 어려웠습니다.
예를 들어, TypeScript에서는 변수에 값을 할당하면 그냥 레퍼런스가 복사됩니다.
근데 Rust에서는 소유권이 아예 바뀝니다.
이러한 Rust 기본 개념들이 스크립트만 만졌던 저에겐 너무나도 어려웠습니다
TS개발자는 완전히 멘탈이 나가버렸습니다
// TypeScript — 그냥 됨
const a = [1, 2, 3];
const b = a;
console.log(a); // [1, 2, 3] ✅
// Rust — 이러면 컴파일 에러
let a = vec![1, 2, 3];
let b = a;
println!("{:?}", a); // ❌ value borrowed here after move
이런 차이를 "Rust는 원래 그래" 대신 "TypeScript에서는 이랬는데, Rust에서는 이런 이유로 이렇게 동작한다"는 식으로 설명하고 싶었습니다.
프레임워크는 Astro + Starlight를 선택했습니다.
처음엔 다 구현할 생각을 하였지만, 막상 다 구현을 할려니 너무 귀찮았습니다.
그렇게 마크다운으로만 구현하는 방법이 없을까 하고 여러 오픈 소스 문서들을 검색하던 중, Axios Docs를 발견했습니다.
Axios Docs는 mdx 형식으로 설명글을 작성하고,
이를 js 플러그인으로 변환해서 mdx -> 실제 웹 사이트를 만드는 방식을 채택하였습니다.
저 혼자 개발, 유지 보수와 공부까지 하는 입장에서 저는 마크다운으로 개념만 작성하며 공부하고 싶지, 코드까지 일일히 다 작성하고 싶진 않아, 저도 mdx -> 웹 사이트 변환 형식을 채택하였습니다.
이 사이트의 가장 특이한 점은 브라우저에서 Rust 코드를 바로 실행해볼 수 있다는 겁니다.
물론 혼자 운영하는 서비스다 보니,
모든 코드들을 다 실행하면 CPU 부하로 인한 배포 비용 증가로 인해 모든 코드에 다 실행기능을 구현하진 못했지만,
간단한 예제 코드는 Rust, JS를 이용해서 가상 환경을 구축하여 실제로 구현이 되게 설계했습니다.
(초기엔 컴파일 빌드로 인해 실행 시간이 조금 걸립니다.)
Fly.io 위에 Rust(axum) 기반 샌드박스 서버를 올려뒀고, 문서 안의 코드 블록에서 직접 실행 버튼을 누르면 결과를 바로 확인할 수 있습니다.
Rust는 로컬에 컴파일러를 설치해야 실행이 되다 보니 "일단 눈으로만 보자" 하게 되기 쉬운데, 이 기능 덕분에 읽으면서 바로 실험해볼 수 있습니다.
총 14개 챕터와 용어 사전으로 구성했습니다.
앞부분에서는 두 언어의 철학적 차이(런타임 안전성 vs 컴파일타임 안전성)를 짚고, 문법 기초와 Ownership & Borrowing 같은 핵심 개념을 다룹니다. 중반부터는 Enum, 이터레이터, Trait, 스마트 포인터, 동시성까지 타입 시스템을 깊게 파고들어요. 마지막에는 실전 예제와 테스트, 그리고 "다음에 뭘 공부하면 좋을지" 학습 로드맵을 담았습니다.
어려운 용어가 나올 때마다 용어 사전으로 링크가 걸려 있어서, 흐름이 끊기지 않으면서도 모르는 개념을 바로 확인할 수 있습니다.
TypeScript 개발자가 Rust를 처음 접할 때 느끼는 "왜 이게 안 되지?"라는 답답함을 조금이라도 줄여보려고 만든 프로젝트입니다. 현재 영어, 한국어 버전으로 배포 되어있으며, 소스 코드는 GitHub에서 확인하실 수 있습니다.
피드백이나 오류 제보는 언제든 환영합니다!
Link: https://rust-with-typescript.qtaghdi.workers.dev/
GitHub: https://github.com/qtaghdi/rust-with-typescript