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.