구조체의 활용
간단한 코드로 구조체를 어떻게 활용하는지 살펴봄.
먼저, 아래의 area 함수는 넓이와 길이를 넘겨 받아 둘을 곱한 결과를 반환함. 이름 그대로 area.
fn main() {
let width1 = 30;
let height1 = 50;
println!("The area of the rectangle is {} square pixels.", area(width1, height1));
}
fn area(width: u32, height: u32) -> u32 {
width * height
}
튜플을 사용하면 다음과 같아짐.
fn main() {
let rect1 = (30, 50);
println!("The area of the rectangle is {} square pixels.", area(rect1));
}
fn area(dimensions: (u32, u32)) -> u32 {
dimensions.0 * dimensions.1
}
이제 구조체를 사용함.
struct Rectangle {
width: u32,
height: u32,
}
fn main() {
let rect1 = Rectangle{width: 30, height: 50};
println!("The area of the rectangle is {} square pixels.", area(&rect1));
}
fn area(rectangle: &Rectangle) -> u32 {
rectangle.width * rectangle.height
}
구조체에 유용한 기능 추가하기
구조체에 #[derive(Debug)] 를 추가함으로써 구조체의 정보를 보다 쉽게 출력할 수 있음. println! 문자열에 쓰인 {:#?} 은 구조체의 각 필드를 줄바꿈을 이용하여 나타냄. (# 이 줄바꿈임)
#[derive(Debug)]
struct Rectangle {
width: u32,
height: u32,
}
fn main() {
let rect1 = Rectangle{width: 30, height: 50};
println!("rect1 is {:#?}", rect1);
}
fn area(rectangle: &Rectangle) -> u32 {
rectangle.width * rectangle.height
}
아웃풋은 아래와 같음.
러스트에는 이것 말고도 여러가지 특성이 존재함. 여기선 이쯤 해두고, 나머지는 추후에 알아보도록 함.