[Rust/러스트] 열거형(enum) 정리
2022. 2. 20. 14:43ㆍProgramming Language/Rust
반응형
■ 열거형
열거형은 하나의 타입이 가질 수 있는 값들을 다양하게 열거함으로써 타입을 정의할 수 있습니다. 열거형의 항목은 다양한 타입으로 설정할 수 있으며, 열거형은 구조체와 같이 메소드와 연관함수를 구현할 수 있습니다.
◆ 다양한 타입으로 설정
Info 열거형의 항목을 다양하게 String, u32, 구조체, 열거형으로 정의함으로써 열거형의 특징을 확인할 수 있습니다.
#[derive(Debug)]
enum Gender{
Male,
Female,
}
#[derive(Debug)]
enum Info{
// String 타입
Name(String),
// u32 타입
Age(u32),
// 구조체
Location{x : i32, y : i32},
// 열거형
Gender(Gender)
}
fn main(){
let name = Info::Name(String::from("Hyunmin han"));
let age = Info::Age(29);
let location = Info::Location{ x : 132, y : 80};
let gender = Info::Gender(Gender::Male);
println!("Name : {:?}", name);
println!("Age : {:?}", age);
println!("Location : {:?}", location);
println!("Gender : {:?}", gender);
}
▶ 출력 결과
Name : Name("Hyunmin han")
Age : Age(29)
Location : Location { x: 132, y: 80 }
Gender : Gender(Male)
◆ 메소드와 연관함수 활용
Info 열거형의 impl(구현부)를 통해 show 메소드와 new_name 연관함수를 구현함으로써, 열거형의 메소드와 연관함수 활용법을 확인할 수 있습니다.
#[derive(Debug)]
enum Info{
Name(String),
}
impl Info{
// 메소드 정의
fn show(&self){
println!("{:?}", self);
}
// 연관 함수 정의
fn new_name(s : String) -> Info {
Info::Name(s)
}
}
fn main(){
// 연관 함수 호출
let name = Info::new_name(String::from("Hyunmin han"));
// 메소드 호출
name.show();
}
▶ 출력 결과
Name("Hyunmin han")
반응형
'Programming Language > Rust' 카테고리의 다른 글
[Rust/러스트] 벡터 다루기 (0) | 2022.02.21 |
---|---|
[Rust/러스트] 패턴 매칭(match, if let) 정리 (0) | 2022.02.21 |
[Rust/러스트] 구조체의 메소드, 연관함수 (0) | 2022.02.17 |
[Rust/러스트] 구조체(struct) 정리 (0) | 2022.02.17 |
[Rust/러스트] 참조자(References)와 빌림(Borrowing) (0) | 2022.02.17 |