구조체의 활용



간단한 코드로 구조체를 어떻게 활용하는지 살펴봄.


먼저, 아래의 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
}


아웃풋은 아래와 같음.



러스트에는 이것 말고도 여러가지 특성이 존재함. 여기선 이쯤 해두고, 나머지는 추후에 알아보도록 함.



'Rust' 카테고리의 다른 글

Enum  (0) 2018.02.21
구조체(메서드)  (0) 2018.02.20
구조체(기본)  (0) 2018.02.19
오너십(슬라이스)  (0) 2018.02.17
오너십(레퍼런스와 대여)  (0) 2018.02.15

+ Recent posts