Rust Enum枚举

本文介绍了Rust语言中的Enum类型,包括普通类型和功能强大的版本,以及如何使用Option表示可能存在或不存在的值。还讨论了如何通过解构和iflet语句处理Option类型的变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rust 第九节 Enum

Enum

普通类型

enum  en_state{
    idle,
    init,
    run,
    stop,
     
}
    let x = en_state::idle;
    let y = en_state::init;
    let z = en_state::run;
    let n = en_state::stop;

可以作为函数参数

    get_state(x);
    get_state(y);
    get_state(z);
    get_state(n);

 fn get_state(state : en_state) {
    
}

功能更加强大的Enum

enum的成员可以是任意类型

enum Ip_addr{
    Ipv4(u32,u32,u32,u32),   //表示是一个数组
    Ipv6(String),            //表示为一个字符串
}

    let ip4 = Ip_addr::Ipv4(192,1,1,1);
    let ip6 = Ip_addr::Ipv6(String::from("::1"));

也可以定义方法

impl Ip_addr {
    fn haha(&self) {

    }
}

可以通过解构将Enum中的数据解构出来

fn print_ipaddr(ip_addr : Ip_addr) {

    //通过match可以将Enum中的值取出来
    match ip_addr {
        Ip_addr::Ipv4(x,y ,z ,m ) => {
            println!("{}:{}:{}:{}",x,y,z,m);
        },
        Ip_addr::Ipv6(string) => {
            println!("{}",string);
        },
    }
}
    print_ipaddr(ip4);
    print_ipaddr(ip6);

Operation 枚举

Operation 枚举 是标准库中的一个枚举,用来表示一个值是否存在
这个是Rust中的一个特性;Rust中没有NULL;数据是否存在可以用Option来表示

原型

    Option<T> {
        Some<T>, //表示值存在,值存在T中
        None     //表示不存在,相当于NULL
    } 

Option自动加载到我们的工作区;可以直接使用它的成员;

    let o1 = Some((12));
    let o2 : Option<i32> = None;

同样,可以取出Some中存储的数据

	let o1 = Some((12));
    let o3 = opt_add(o1);

fn opt_add(oper : Option<i32>) -> Option<i32> {
    match oper {
        Some(x) => Some(x + 1),
        None => None,
    }
}

if let 语句

当一个变量是Option时,我们想快速获取这个变量的数据,就可以使用if let语句

    // if let 语句,简单判断值是否为空
    if let Some(number) = o3 {
        println!("o3 value is {}",number);
    }
    else {
        println!("不相等");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值