🦀 Rust 치트시트

메모리 안전성과 성능을 동시에 제공하는 언어

기본 문법

변수 선언
let name = "Rust";
let mut age = 25;
let is_active: bool = true;
const MAX_SIZE: u32 = 1000;
조건문
if condition {
    statement;
} else if other_condition {
    other_statement;
} else {
    default_statement;
}
반복문
for i in 0..10 {
    println!("{}", i);
}

for item in items.iter() {
    println!("{}", item);
}
함수 정의
fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn greet(name: &str) {
    println!("Hello, {}!", name);
}

소유권과 빌림

소유권
let s1 = String::from("hello");
let s2 = s1; // s1은 더 이상 유효하지 않음
// println!("{}", s1); // 컴파일 에러!
빌림
let s1 = String::from("hello");
let len = calculate_length(&s1);
println!("The length of '{}' is {}.", s1, len);

fn calculate_length(s: &String) -> usize {
    s.len()
}
가변 빌림
let mut s = String::from("hello");
change(&mut s);

fn change(some_string: &mut String) {
    some_string.push_str(", world");
}
라이프타임
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

구조체와 열거형

구조체
struct User {
    username: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

let user1 = User {
    email: String::from("someone@example.com"),
    username: String::from("someusername123"),
    active: true,
    sign_in_count: 1,
};
구조체 메서드
impl User {
    fn new(username: String, email: String) -> User {
        User {
            username,
            email,
            sign_in_count: 1,
            active: true,
        }
    }
    
    fn greet(&self) -> String {
        format!("Hello, {}!", self.username)
    }
}
열거형
enum IpAddrKind {
    V4,
    V6,
}

let four = IpAddrKind::V4;
let six = IpAddrKind::V6;
Option과 Result
let some_number = Some(5);
let some_string = Some("a string");
let absent_number: Option<i32> = None;

let result: Result<i32, &str> = Ok(42);
let error: Result<i32, &str> = Err("Something went wrong");
더 많은 Rust 학습 자료

체계적인 학습을 위해 다음 자료들도 확인해보세요