구조체 정의와 인스턴스 생성
struct User {
username: String,
email: String,
active: bool,
}
let user1 = User {
username: String::from("user1"),
email: String::from("user1@example.com"),
active: true,
};
필드 초기화 축약법
fn build_user(email: String, username: String) -> User {
User {
email, // email: email 대신 축약
username, // username: username 대신 축약
active: true,
}
}
구조체 갱신 문법
let user2 = User {
email: String::from("user2@example.com"),
..user1 // user1의 나머지 필드 값을 사용
};
튜플 구조체
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
let black = Color(0, 0, 0);
let origin = Point(0, 0, 0);
메서드 문법
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
}
연관 함수
impl Rectangle {
fn square(size: u32) -> Rectangle {
Rectangle {
width: size,
height: size
}
}
}