본문 바로가기
개발/러스트 (Rust)

Rust 기본, 구조체 (Struct) Tuple structs

by 레조 2024. 8. 6.

https://rustacean.net/

 

Rust 기본, 구조체 (Struct) Tuple structs

 

튜플(Tuple)과 튜플 구조체(Tuple structs)

 - 튜플 : 여러 타입을 하나의 데이터로 묶어 준다. 단, 튜플은 타입을 정의하지 않는다.

 - 튜플 구조체 : 데이터 타입이나 인자 개수 체크가 가능한 하나의 데이터 타입으로 묶어준다.

fn main() {
    // 튜플(tuple)
    // 이 함수 저 함수 사이를 이동하다 보면 변수 이름이 바뀌면서,
    // 튜플 데이터가 어떤 의미였는지 알기 어려워진다.
    let rgb_color = (255, 106, 0);
    let cmyk_color = (0, 58, 100, 0);

    // 튜플 구조체(tuple structs)
    // 타입이나 인자 개수 체크 가능.
    struct RGB(i32, i32, i32);
    struct CMYK(i32, i32, i32, i32);

    // 타입을 통해 어떤 테이터로 묶인 것인지 알 수 있다.
    let color1 = RGB(255, 106, 0);
    let color2 = CMYK(0, 58, 100, 0);
}

 

유닛 구조체(Unit structs)

 : 유닛 구조체는 필드 없이 드물게 사용한다.

ex) 데이터를 가지지 않는 트레이트(trait)를 구현할 때 유닛 구조체를 사용한다. (트레이트는 추후 다룬다.)

// Unit structs
struct MyStruct;

 


 

튜플 구조체 활용.

struct Point(f32, f32);

impl Point {
    fn on_x_axis(&self) -> bool {
        println!("Point.x: {}", self.0);
        self.0 == 0.0
    }
    fn on_y_axis(&self) -> bool {
        println!("Point.y: {}", self.1);
        self.1 == 0.0
    }
}

fn main() {
    let point = Point(0.0, 0.0);
    if point.on_x_axis() && point.on_y_axis() {
        println!("Point is origin");
    }
}