구조체 안의 필드들을 한 줄로 꺼내서 각각의 변수로 선언하는 방법
#[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);
}
구조체 필드가 많을 경우 .필드
를 계속 안붙이고 사용할 수 있다는 장점이 있는 것 같다.
변수 이름을 필드 이름과 똑같이 쓰고 싶을 때 편하게 사용할 수 있다.