πŸ¦€

Rust μ›Ή 개발

μ•ˆμ „ν•˜κ³  λΉ λ₯Έ μ‹œμŠ€ν…œ μ–Έμ–΄λ‘œ λ§Œλ“œλŠ” ν˜„λŒ€μ μΈ μ›Ή

← λ©”μΈμœΌλ‘œ λŒμ•„κ°€κΈ°

πŸ§ͺ μƒ˜ν”Œ νŽ˜μ΄μ§€

LIVE Β· WebSocket

πŸ’¬ μ‹€μ‹œκ°„ μ±„νŒ… μƒ˜ν”Œ

μ ‘μ†μžλΌλ¦¬ λŒ€ν™”ν•˜λŠ” 데λͺ¨. Rust(Axum) WebSocket λ°±μ—”λ“œλ‘œ μ‹€μ‹œκ°„ μ „μ†‘ν•˜λ©°, λ‹‰λ„€μž„μ€ 접속 IP, μž…μž₯Β·λŒ€ν™” λ‚΄μš©μ΄ μ„œλ²„ νŒŒμΌμ— 기둝되고 졜근 1μ‹œκ°„ λΆ„λŸ‰λ§Œ λ³΄κ΄€λ©λ‹ˆλ‹€.

LIVE Β· Playground

🧩 Rust Playground

λΈŒλΌμš°μ €μ—μ„œ Rust μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  μ‹€ν–‰ λ²„νŠΌμœΌλ‘œ κ²°κ³Όλ₯Ό ν™•μΈν•˜λŠ” 데λͺ¨. 문법 κ°•μ‘° 에디터(CodeMirror)λ₯Ό μ œκ³΅ν•˜λ©°, 컴파일/싀행은 곡식 μƒŒλ“œλ°•μŠ€(play.rust-lang.org)μ—μ„œ μ•ˆμ „ν•˜κ²Œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

LIVE Β· ν•™μŠ΅

πŸ“š Rust ν•™μŠ΅ (λ ˆλ²¨λ³„ + μ‹œν—˜)

κΈ°μ΄ˆλΆ€ν„° μ€‘κΈ‰κΉŒμ§€ 6단계 λ ˆλ²¨λ³„ ν•™μŠ΅. 각 레벨 μ‹œν—˜μ„ ν†΅κ³Όν•˜λ©΄ λ‹€μŒ 단계가 열리고, μ‹œν—˜μ€ μ–Έμ œλ“  μ‘μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‹œμž‘ μ „ μž…λ ₯ν•œ μ‚¬μš©μž μ •λ³΄λ‘œ μ§„λ„Β·μ μˆ˜κ°€ μ„œλ²„μ— μ €μž₯λ˜μ–΄ μ΄λ©”μΌλ‘œ λ‹€μ‹œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Rust λž€?

RustλŠ” λ©”λͺ¨λ¦¬ μ•ˆμ „μ„±μ„ 컴파일 νƒ€μž„μ— 보μž₯ν•˜λ©΄μ„œλ„ C/C++ μˆ˜μ€€μ˜ μ„±λŠ₯을 λ‚΄λŠ” μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μž…λ‹ˆλ‹€. κ°€λΉ„μ§€ 컬렉터 없이 μ†Œμœ κΆŒ(ownership) λͺ¨λΈλ‘œ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•˜λ©°, Stack Overflow μ„€λ¬Έμ—μ„œ μˆ˜λ…„μ§Έ "κ°€μž₯ μ‚¬λž‘λ°›λŠ” μ–Έμ–΄"둜 κΌ½ν˜€ μ™”μŠ΅λ‹ˆλ‹€. μ›Ή λ°±μ—”λ“œ, WebAssembly(WASM) ν”„λŸ°νŠΈμ—”λ“œ, CLI 도ꡬ, μž„λ² λ””λ“œκΉŒμ§€ ν­λ„“κ²Œ μ“°μž…λ‹ˆλ‹€.

μ™œ 웹에 Rust 인가

μ£Όμš” μ›Ή ν”„λ ˆμž„μ›Œν¬

λ°±μ—”λ“œ Β· 인기

Axum

Tokio νŒ€μ΄ λ§Œλ“  λͺ¨λ“ˆν˜• ν”„λ ˆμž„μ›Œν¬. Tower 미듀웨어 μƒνƒœκ³„μ™€ ꢁ합이 μ’‹μ•„ 졜근 ν‘œμ€€μ²˜λŸΌ μ“°μž„.

λ°±μ—”λ“œ Β· μ„±μˆ™

Actix Web

μ•‘ν„° λͺ¨λΈ 기반의 μ΄ˆκ³ μ„±λŠ₯ ν”„λ ˆμž„μ›Œν¬. 벀치마크 μƒμœ„κΆŒ, λŒ€κ·œλͺ¨ μ„œλΉ„μŠ€μ— λ‹€μˆ˜ 채택.

λ°±μ—”λ“œ Β· 편의

Rocket

맀크둜 기반의 직관적 API. νƒ€μž… μ•ˆμ „ λΌμš°νŒ…κ³Ό 폼 처리둜 생산성이 λ†’μŒ.

ν”„λŸ°νŠΈ Β· WASM

Leptos

λ°˜μ‘ν˜• μ‹ ν˜Έ(signals) 기반 ν’€μŠ€νƒ WASM ν”„λ ˆμž„μ›Œν¬. SSR + ν•˜μ΄λ“œλ ˆμ΄μ…˜ 지원.

맛보기: Axum 으둜 λ§Œλ“œλŠ” "Hello"

// Cargo.toml: axum = "0.7", tokio = { version = "1", features = ["full"] }
use axum::{routing::get, Router};

#[tokio::main]
async fn main() {
    let app = Router::new()
        .route("/", get(|| async { "πŸ¦€ Hello from Rust!" }))
        .route("/rust", get(|| async { "pastacoding.com Γ— Rust" }));

    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000")
        .await.unwrap();
    axum::serve(listener, app).await.unwrap();
}

μ‹œμž‘ν•˜κΈ°

  1. μ„€μΉ˜ β€” curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. ν”„λ‘œμ νŠΈ 생성 β€” cargo new my-web && cd my-web
  3. μ˜μ‘΄μ„± μΆ”κ°€ β€” cargo add axum tokio --features tokio/full
  4. μ‹€ν–‰ β€” cargo run ν›„ http://localhost:3000 접속

더 μ•Œμ•„λ³΄κΈ°

곡식 μ‚¬μ΄νŠΈ

rust-lang.org (ν•œκ΅­μ–΄ 지원)

The Book

곡식 μž…λ¬Έμ„œ "The Rust Programming Language"

crates.io

Rust νŒ¨ν‚€μ§€(크레이트) λ ˆμ§€μŠ€νŠΈλ¦¬

Rust by Example

예제둜 λ°°μš°λŠ” Rust