본문 바로가기
개발/러스트 (Rust)

Rust 기본, 구조체 (Struct)

by 레조 2024. 7. 24.

https://rustacean.net/

 

Rust 기본 : 구조체 (Struct)

구조체는 관련 데이터를 그룹화 할 수 있게 해줍니다.

 

구조체 정의

struct User {
    name: String,
    age: u8
}

fn struct_definition() {
    let user = User {
        name: String::from("Tom Riddle"),
        age: 17u8,
    };
    
    println!("User's name: {}", user.name);
    println!("User's age: {}", user.age);
}

 

구조체 수정

struct ShopItem {
    name: String,
    quantity: u32,
    in_stock: bool,
}

fn mutation_structs() {
    let mut item = ShopItem {
        name: String::from("Socks"),
        quantity: 200,
        in_stock: true,
    };
    
    // 50 쌍의 양말 판매.
    item.quantity -= 50;
    if item.quantity == 0 {
        item.in_stock = false;
    }
    
    println!("{} is in stock: {}", item.name, item.in_stock);
}

 

구조체와 함수

struct ShopItem {
    name: String,
    quantity: u32,
}

fn structs_and_functions() {
    let item = create_item("Socks", 200);
    let in_stock = is_in_stock(&item);
    println!("{} is in stock: {in_stock}", item.name);
}

fn create_item(name: &str, quantity: u32) -> ShopItem {
    ShopItem {
        name: name.to_string(),
        // 변수와 구조체 필드의 이름이 같을 때,
        // 구조체 초기화를 어떻게 간소화할 수 있는지 보자.
        quantity, 
    }
}

fn is_in_stock(item: &ShopItem) -> bool {
    item.quantity > 0
}