Rust에 대해 알아보자

러브굿·2026년 2월 2일

🦀 Rust, 왜 배워야 할까?

Rust란?

Mozilla에서 개발한 시스템 프로그래밍 언어다. 메모리 안전성높은 성능을 동시에 잡았고, C/C++의 대안으로 주목받고 있다.

핵심 특징

1. 소유권(Ownership) 시스템

GC 없이 메모리 안전을 보장한다. 컴파일 타임에 메모리 버그를 잡아내는 게 핵심이다.

fn main() {
    let s1 = String::from("hello");
    let s2 = s1; // s1의 소유권이 s2로 이동
    // println!("{}", s1); // 컴파일 에러!
}

2. 빌림(Borrowing)과 라이프타임

소유권을 넘기지 않고 참조만 빌려줄 수 있다. 라이프타임으로 참조의 유효 범위를 추적한다.

fn main() {
    let s1 = String::from("hello");
    let len = calculate_length(&s1); // 빌려주기만 함
    println!("{}: {}", s1, len); // s1 여전히 사용 가능
}

fn calculate_length(s: &String) -> usize {
    s.len()
}

3. 두려움 없는 동시성(Fearless Concurrency)

Rust의 가장 강력한 특징 중 하나다. 소유권 시스템 덕분에 데이터 레이스를 컴파일 타임에 방지한다.

use std::thread;

fn main() {
    let v = vec![1, 2, 3];
    
    let handle = thread::spawn(move || {
        println!("{:?}", v); // move로 소유권 이전
    });
    
    handle.join().unwrap();
}

채널을 통한 메시지 패싱도 깔끔하다:

use std::sync::mpsc;
use std::thread;

fn main() {
    let (tx, rx) = mpsc::channel();
    
    thread::spawn(move || {
        tx.send("hello").unwrap();
    });
    
    println!("{}", rx.recv().unwrap());
}

4. 제로 코스트 추상화

고수준 추상화를 써도 런타임 오버헤드가 없다. 이터레이터, 클로저 등을 마음껏 써도 직접 작성한 저수준 코드만큼 빠르다.

5. 패턴 매칭

match 표현식으로 강력한 패턴 매칭이 가능하다. 모든 케이스를 처리해야 컴파일되기 때문에 실수를 방지할 수 있다.

enum Result<T, E> {
    Ok(T),
    Err(E),
}

fn main() {
    let result: Result<i32, &str> = Ok(42);
    
    match result {
        Ok(value) => println!("성공: {}", value),
        Err(e) => println!("실패: {}", e),
    }
}

어디에 쓰일까?

분야예시
시스템 프로그래밍OS, 드라이버
웹 백엔드Actix, Axum
CLI 도구ripgrep, bat
웹어셈블리브라우저 고성능 앱
블록체인Solana, Polkadot

마무리

러닝 커브가 있지만, 한 번 익히면 안전하고 빠른 코드를 작성할 수 있다. Stack Overflow에서 8년 연속 "가장 사랑받는 언어" 1위를 차지한 데는 이유가 있다.

처음엔 컴파일러와 싸우겠지만, 결국 컴파일러가 가장 좋은 친구가 될 거다. 🦀


참고 자료

profile
마라토너형 개발자

0개의 댓글