Rust的模式匹配

文章目录

match匹配

match可以结合枚举使用,例如

rust 复制代码
enum IpVersion {
	V4,
	V6,
}

fn ParseIpVersion(version: IpVersion) -> String {
    match version {
        IpVersion::V4 => String::from("ipv4"),
        IpVersion::V6 => String::from("ipv6"),
    }
}

match结合绑定值的枚举,例如

rust 复制代码
enum Ip {
	V4(String),
	V6(String),
}

fn ParseIpVersion(ip: Ip) {
    match ip {
        Ip::V4(ipv4) => println!("ipv4: {}", ipv4),
        Ip::V6(ipv6) => println!("ipv6: {}", ipv6),
    }
}

match必须列举所有的可能,在某些情况下可以使用占位符 _ 和通配 other 来保证列举所有可能

rust 复制代码
fn MatchNum0(num: i32) {
	match num {
		0 => println!("zero"),
		1 => println!("one"),
		_ => println!("other"),
	}
}

fn MatchNum1(num: i32) {
	match num {
		0 => println!("zero"),
		1 => println!("one"),
		other => println!("other: {}", other),
	}
}

可以使多个模式匹配一种结果

rust 复制代码
fn MatchNum(num: i32) {
	match num {
		0 | 1 => println!("zero or one"),
		_ => println!("other"),
	}
}

匹配结构体

rust 复制代码
struct User {
    age: u8,
    name: String,
    sex: char
}

fn MatchUser(user: User) {
	match user {
	    User { age: 10, name, sex } => println!("I'm {}, age is 10", if sex == '0' {"girl"} else {"boy"}),
	    User { age: 12, name, sex: '0' } => println!("I'm girl, age is 12"),
        _ => {println!("other age")}
	}
}

if let匹配

某些情况下可以使用if let这种匹配简单的匹配

rust 复制代码
fn MatchNum(num: Option<i32>) {
    if let Some(num ) = num {
        println!("number: {}", num)
    } else {
        println!("none")
    }
}
相关推荐
东方佑3 小时前
自动调整PPT文本框内容:防止溢出并智能截断文本
linux·运维·powerpoint
zhougl9964 小时前
html处理Base文件流
linux·前端·html
泥土编程5 小时前
kubekey -实现懒人一键部署K8S集群
linux·运维
叠叠乐5 小时前
rust Send Sync 以及对象安全和对象不安全
开发语言·安全·rust
niandb6 小时前
The Rust Programming Language 学习 (九)
windows·rust
wirepuller_king8 小时前
创建Linux虚拟环境并远程连接,finalshell自定义壁纸
linux·运维·服务器
在野靡生.9 小时前
Ansible(1)—— Ansible 概述
linux·运维·ansible
风123456789~9 小时前
【Linux运维】查询指定日期的上月
linux·运维·服务器
我没想到原来他们都是一堆坏人9 小时前
利用vmware快速安装一个可以使用的centos7系统
linux·虚拟机
x-cmd9 小时前
[250331] Paozhu 发布 1.9.0:C++ Web 框架,比肩脚本语言 | DeaDBeeF 播放器发布 1.10.0
android·linux·开发语言·c++·web·音乐播放器·脚本语言