Rust语言-枚举类型

本文介绍了 Rust 语言中的枚举类型(enum)及其使用方法。通过实例展示了如何定义枚举类型、为枚举成员赋值及取值,并演示了使用 match 语句处理枚举值的具体过程。

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

Rust语言-枚举类型

浅谈rust枚举(enum)
参考URL: https://blog.youkuaiyun.com/weixin_44259356/article/details/104007741

Rust 语言提供了 enum 关键字用于定义枚举。
可以处理同一类的不同类型和数量的数据,就可以使用枚举类。

借用下官方文档的例子:
ip地址主要分为ipv4,和ipv6,如果是用java或者c++等面向对象的语言,我们首先应该创建一个类,类里应该有addr属性,用来存放地址,然后还应该有相应的get,set方法来获取和修改地址的值。为了同时保存v4和v6的地址,addr类型必须是String。

v4和v6都为同一类型(IpAddr),只是成员分别为v4和v6。

enum IpAddr {
V4(u8, u8, u8, u8),
V6(String),
}

枚举的赋值

let ipv4= IpAddr::V4(127, 0, 0, 1);
let ipv6= IpAddr::V6(String::from("::1"));

注:枚举的成员位于其标识符的命名空间中,并使用两个冒号分开。

枚举的取值

直接打印

println!("{:#?}", ipv4);
println!("{:#?}", ipv6);

注意:直接打印要通过注解标注枚举 #[derive(Debug)] 否则报错

完整demo

#[derive(Debug)]
enum IpAddr {
    V4(u8, u8, u8, u8),
    V6(String),
}

fn main(){
    println!("--- start ---");
    let ipv4 = IpAddr::V4(127, 0, 0, 1);
    let ipv6 = IpAddr::V6(String::from("::1"));
    println!("{:#?}", ipv4);
    println!("{:#?}", ipv6);

    println!("--- end ---");

}

通过match

#[derive(Debug)]
enum IpAddr {
    V4(u8, u8, u8, u8),
    V6(String),
}

fn main(){
    println!("--- start ---");
    let ipv4 = IpAddr::V4(127, 0, 0, 1);
    let ipv6 = IpAddr::V6(String::from("::1"));
    println!("{:#?}", ipv4);
    println!("{:#?}", ipv6);

    match ipv4 {
        IpAddr::V4(a,b,c,d) => println!("值为:{},{},{},{}",a,b,c,d),
        IpAddr::V6(date) => println!("{}",date),
    }
    
    match ipv6 {
        IpAddr::V4(a,b,c,d) => println!("值为:{},{},{},{}",a,b,c,d),
        IpAddr::V6(date) => println!("{}",date),
    }
    println!("--- end ---");

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值