rust 구조체 패턴 디스트럭처링(destructuring)

wangki·2025년 5월 8일
0

Rust

목록 보기
33/54

구조체 패턴 디스트럭처링(destructuring)

구조체 안의 필드들을 한 줄로 꺼내서 각각의 변수로 선언하는 방법

#[derive(Debug)]
struct Student {
    name: String,
    age: i8,
    address: String,
    class: String,
}

impl Student {
    fn new(name: impl Into<String>, age: i8, address: impl Into<String>, class: impl Into<String>) -> Self {
        Student { name: name.into(), age, address: address.into(), class: class.into() }
    }
}

Student 구조체를 정의하였다. Student객체를 만들어보겠다.

fn main() {
    let student_a = Student::new("kwj", 29, "sindorim", "a");

    let name = student_a.name;
    let age = student_a.age;
    let address = student_a.address;
    let class = student_a.class;

    println!("name: {}, age: {}, address: {}, class: {}", name, age, address, class);
}

만약 내부 필드의 값을 로컬변수로 선언하여 사용하고 싶다면 위와같이 해야한다.

여기서 구조체 패턴 디스트럭처링을 사용하면 간단하게 구현이 가능하다.

fn main() {
    let Student { name, age, address, class } = Student::new("nami", 28, "hongdae", "b");
    
    println!("name: {}, age: {}, address: {}, class: {}", name, age, address, class);
}

구조체 필드가 많을 경우 .필드를 계속 안붙이고 사용할 수 있다는 장점이 있는 것 같다.
변수 이름을 필드 이름과 똑같이 쓰고 싶을 때 편하게 사용할 수 있다.

0개의 댓글