필드 할당 단축 문법
구조체 필드와 동일한 이름의 변수가 있다면 아래와 같이 “짧은 문법“으로 구조체를 생성할 수 있습니다:
#[derive(Debug)] struct Person { name: String, age: u8, } impl Person { fn new(name: String, age: u8) -> Person { Person { name, age } } } fn main() { let peter = Person::new(String::from("Peter"), 27); println!("{peter:?}"); }
-
new
함수를 다음처럼 구조체 이름 대신Self
를 사용하여 작성해도 됩니다#[derive(Debug)] struct Person { name: String, age: u8, } impl Person { fn new(name: String, age: u8) -> Self { Self { name, age } } }
-
Default
트레잇을 구현해보세요. 필드 몇개는 초기화하고 나머지 필드는 디폴트 값을 사용할 수 있습니다.#[derive(Debug)] struct Person { name: String, age: u8, } impl Default for Person { fn default() -> Person { Person { name: "Bot".to_string(), age: 0, } } } fn create_default() { let tmp = Person { ..Person::default() }; let tmp = Person { name: "Sam".to_string(), ..Person::default() }; }
-
메서드는
impl
블록에 정의됩니다. -
peter
와 구조체 업데이트 문법을 사용하여 새로운 구조체 인스턴스를 만들어보세요. 이때,peter
는 더이상 사용할 수 없게 됩니다. -
구조체를
Debug
형태로 출력하려면{:#?}
를 사용하세요.