Rust enum 枚举

发布时间: 更新时间: 总字数:351 阅读时间:1m 作者: IP上海 分享 网址

Rust 中将列举所有可选的值定义为一个枚举类型。

概念

定义

enum 枚举类型名 {
  值1,
  值2,
}

访问

枚举类型名::值1;,如:let name = CityKind::sh;

  • 枚举的变体都位于标识符的命名空间下,使用 :: 进行访问

枚举方法

使用 impl 关键字为枚举定义方法。

示例

#[derive(Debug)]
enum Sex {
    Man,
    Woman,
}

impl Sex {
    fn print(&self) {
        println!("{:?}", self);  // () ?
    }
}

struct Student {
    name: String,
    sex: Sex,
}

fn print(sex: Sex) {
    println!("{:?}", sex);
}

fn main() {
    print(Sex::Man);

    let woman = Sex::Woman;
    print(woman);

    let stu = Student{
        name: String::from("xiaoming"),
        sex: Sex::Man,
    };
    println!("name: {}, sex: {:?}", stu.name, stu.sex.print())
}

数据附加到枚举的变体中

定义

enum 枚举类型名 {
  值1(类型、结构体或枚举等),
  值2(类型或结构体),
}

优点:

  • 不需要额外使用 struct 就能存储值
  • 每个变体可以拥有不同的类型和关联的数据量

示例:

enum Sex {
    Man(String),
    Woman(String),
}

let man = Sex::Man("man");

pub enum

enum 默认为私有的,可以使用 pub 关键字定义公有枚举:

pub enum 枚举类型名 {
  值1(类型、结构体或枚举等),
  值2(类型或结构体),
}

说明:

  • pub enum 所有的变体都是公共的,与 Rust 其私有规则有所不同
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数