Post

Rust Enums 에 대해 알아보자! - Part1

♧ Rust Enum 관련 링크

# Rust doc 공식 사이트 for enum

# Rust doc 예제 for enum

  • 위 Rust 공식 사이트에 자세한 설명이 나와있다. 아직 읽어보지 않았다면 정독하기를 추천!~


♧ 간단 설명 with 예제

  • 처음 Rust Enum 을 접했을 때, 코틀린의 Enum class와 비슷한 느낌을 받았었다.
  • Rust enum의 경우, 아래 예시의 Method enum처럼, 각 필드에 개별 타입을 설정할 수 있다.
    이 경우, 자동 숫자 지정이 안되는 것 같다.
  • 아래의 Test enum의 경우, 자동 숫자 지정이 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
enum Method {
    GET(String),
    DELETE(u64),
    POST(u8, u8),
    PUT,
}

enum Test {
    T0, // 0
    T1, // 1
    T2, // 2
    T3, // 3
}

fn main() {
    let get = Method::GET("Test".to_string());
    let delete = Method::DELETE(10);
    let post = Method::POST(3, 3);
    let put = Method::PUT;
    println!("{:?}", get);
    println!("{:?}", post);

    let t1 = Test::T1;
    println!("{:?}", t1 as u8);
}
  • 실행 결과
1
2
3
GET("Test")
POST(3, 3)
1


  • 위의 결과 GET(“Test”)에서 “Test”만 가져오고 싶을 땐, 아래와 같이 하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
if let Method::GET(val) = &get {
        println!("방식1: {}", val);
    }
    
// 또는 아래처럼...
match &get {
    Method::GET(val) => println!("방식2: {}", val),
    _ => {}
}

if let Method::POST(val1, val2) = &post {
    println!("put: {:?}", (val1, val2));
}
  • 실행 결과
1
2
3
방식1: Test
방식2: Test
put: (3, 3)
This post is licensed under CC BY 4.0 by the author.