~/VibeHandbook
$39

언어

rust-lang.org

Rust

무엇인가

Rust는 가비지 컬렉터 없이 메모리 안전성을 추구하는 정적 타입의 컴파일 시스템 언어입니다. 소유권(ownership)과 빌림(borrowing) 모델이 컴파일 시점에 데이터 경쟁이나 use-after-free 버그가 발생하지 않음을 보장하여, C 수준의 성능을 훨씬 적은 함정과 함께 제공합니다.

강점

  • 메모리 안전성과 스레드 안전성을 컴파일 시점에 강제하며, GC가 없습니다.
  • C 및 C++에 필적하는 성능.
  • 풍부한 타입 시스템, 패턴 매칭, 그리고 일급 패키지 매니저(Cargo).
  • 무엇이 잘못되었고 어떻게 고쳐야 하는지 설명해 주는 뛰어난 컴파일러 오류 메시지.

트레이드오프

  • 가파른 학습 곡선 — 빌림 검사기(borrow checker)를 체득하는 데 실제로 시간이 걸립니다.
  • 고수준 언어보다 작성이 느리고 컴파일 시간이 깁니다.
  • 간단한 스크립트나 빠른 프로토타입에는 과합니다.
  • 비동기 Rust와 라이프타임이 많이 얽힌 제네릭 코드는 정말로 복잡해질 수 있습니다.

언제 선택하나

성능, 신뢰성, 자원 제어가 한꺼번에 모두 중요할 때 Rust를 선택하세요: 시스템 소프트웨어, 게임 엔진, 명령줄 도구, WebAssembly, 임베디드, 또는 성능이 중요한 서비스. 일회성 스크립트에는 잘 맞지 않으며, 그 경우 안전성 보장이 마찰을 감수할 만한 가치가 없습니다.

바이브 코딩 적합성

AI 어시스턴트는 그럴듯한 Rust를 생성하지만, 진정한 심판은 빌림 검사기입니다 — 컴파일러 오류를 다시 붙여넣고 반복하게 될 것이며, Rust의 진단 메시지가 정밀하고 모델이 그에 따라 행동할 수 있기 때문에 이 방식은 잘 작동합니다. AI가 오류 처리에 Result?를 활용하고, 라이프타임과 싸우기보다 소유 타입이나 명확한 빌림을 선호하며, 크레이트를 (Cargo.toml 항목과 함께) 명시적으로 제안하도록 지시하세요. 안전성과 동작을 검증할 수 있도록 cargo test 케이스를 요청하세요. 모델이 unsafe를 제안하면 반박하고 먼저 안전한 대안을 요청하세요.

fn main() {
    let nums = vec![3, 1, 4, 1, 5, 9, 2, 6];
    let sum: i32 = nums.iter().filter(|&&n| n % 2 == 0).sum();
    println!("Sum of evens: {sum}");
}