【Rust】第七节:枚举与模式匹配

0 前言

是我的一点学习笔记,因为本身内容就不多、不复杂,所以这一篇内容结构与原文基本一致,但是是我个人理解原文的一个思路过程的记录。

枚举,enums,如果你了解tspythonc/cppjava那你可能会觉得很熟悉,但是又很不同,rust的枚举更丰富、更灵活、更方便、更强大。
所以你准备走进rust的枚举类型了吗?

原文链接:Rust程序设计语言


1 枚举

rust有两种枚举,一个是enum,一个是option,我们一个一个来看。

1.1 enum

以IPv4和IPv6为例

// 以下是伪代码,不可直接运行
// 1 定义enum
enum IpAddrKind {
   
    V4,
    V6,
}
// 2 实例化enum
let four = IpAddrKind::V4;
let six = IpAddrKind::V6;
// 3 函数可以以enum为入参
fn route(ip_type: IpAddrKind) {
    }
// 4 使用函数
route(IpAddrKind::V4);
route(IpAddrKind::V6);

以上是最简单的写法,那么在此之上,我们是否可以将enum与struct结合起来,从而实现更加复杂的enum类型呢?显然是可以的

enum IpAddrKind {
   
    V4,
    V6,
}
struct IpAddr {
   
    kind: IpAddrKind,
    address: String,
}
let home = IpAddr {
   
    kind: IpAddrKind::V4,
    address: String::from("127.0.0.1"),
};
let loopback = IpAddr {
   
    kind: IpAddrKind::V6,
    address: String::from("::1"),
};

而事实上,我们没有必要把枚举作为结构体的一部分,而是可以直接给枚举成员赋值,就像下面这样

enum IpAddr {
   
    V4(String),
    V6(String),
}
let home = IpAddr::V4(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值