当前位置: 首页 > news >正文

巅峰网站建设网上商城建设 网站定制开发

巅峰网站建设,网上商城建设 网站定制开发,大连网站设计布局,仿网站被封怎么办Rust学习笔记_10——守卫 Rust学习笔记_11——函数 Rust学习笔记_12——闭包 枚举 文章目录 枚举1. 定义1.1 无值变体1.2 有值变体1.3 枚举与泛型的结合 2. 使用2.1 和匹配模式一起使用2.2 枚举作为类型别名 3. 常用枚举类型 在Rust编程语言中,枚举(enum…

Rust学习笔记_10——守卫
Rust学习笔记_11——函数
Rust学习笔记_12——闭包


枚举

文章目录

    • 枚举
      • 1. 定义
        • 1.1 无值变体
        • 1.2 有值变体
        • 1.3 枚举与泛型的结合
    • 2. 使用
        • 2.1 和匹配模式一起使用
        • 2.2 枚举作为类型别名
      • 3. 常用枚举类型


在Rust编程语言中,枚举(enum)是一种非常有用的数据类型,允许你定义一个变量的集合,这个变量的值可以是多个不同的类型之一。

1. 定义

枚举通过enum关键字定义。每个枚举成员(也称为变体)可以是无值的,也可以包含值

1.1 无值变体

Direction枚举有四个无值变体:NorthEastSouthWest

enum Direction {North,East,South,West,
}
1.2 有值变体

IpAddrKind枚举有两个有值变体:V4V6V4包含四个u8类型的值,而V6包含一个String类型的值。

enum IpAddrKind {V4(u8, u8, u8, u8),V6(String),
}
1.3 枚举与泛型的结合

Rust中的枚举还可以与泛型结合使用,从而创建更加通用和灵活的数据类型。

enum ErrorLevel<T> {Error(T),Info(T),Warning(T),
}

2. 使用

2.1 和匹配模式一起使用

通过匹配(match)表达式检查枚举变量的值,并根据不同的变体执行不同的代码

fn main() {let some_number = IpAddrKind::V4(192, 168, 1, 1);match some_number {IpAddrKind::V4(a, b, c, d) => {println!("IPv4 address: {}.{}.{}.{}", a, b, c, d);}IpAddrKind::V6(s) => {println!("IPv6 address: {}", s);}}
}
2.2 枚举作为类型别名
enum Message {Quit,Move { x: i32, y: i32 },Write(String),ChangeColor(i32, i32, i32),
}fn main() {let msg = Message::Write(String::from("hello"));match msg {Message::Quit => {println!("Quit");}Message::Move { x, y } => {println!("Move to x={}, y={}", x, y);}Message::Write(text) => {println!("Write: {}", text);}Message::ChangeColor(r, g, b) => {println!("Change color to ({}, {}, {})", r, g, b);}}
}

3. 常用枚举类型

Rust中有两个广泛使用的枚举类型:OptionResult

  1. Option:用于表示可能不存在的值。它有两个成员:Some(T)表示有值的情况,None表示没有值的情况。Option类型在Rust中非常重要,因为它被用来替代其他语言中的空类型(如null、nil等),从而避免空指针异常等问题。
let some_number: Option<i32> = Some(5);
let no_number: Option<i32> = None;match some_number {Some(x) => println!("Got a number: {}", x),None => println!("No number here!"),
}
  1. Result:用于表示一个操作的结果可能是成功也可能是错误。它有两个成员:Ok(T)表示成功的情况,Err(E)表示错误的情况。Result类型在Rust的错误处理中非常有用。
use std::fs::File;
use std::io::ErrorKind;fn main() {let file = File::open("hello.txt");let result = match file {Ok(f) => {let metadata = f.metadata();if metadata.is_ok() {println!("File found!");} else {println!("Error reading metadata");}"Success"}Err(e) => {if e.kind() == ErrorKind::NotFound {println!("File not found!");} else {println!("Some other error: {}", e);}"Error"}};println!("Result: {}", result);
}
http://www.yayakq.cn/news/713820/

相关文章:

  • 永久免费手机网站自助建站注册深圳公司的费用
  • 网站一直显示建设中山西谷歌seo
  • 西安建设网站的公司简介asp技术网站开发案例
  • 常州市金坛建设局网站适合小企业的erp软件
  • 可以做直播卖产品的网站什么都能搜到的浏览器
  • 网站集约化建设困难常见的cms网站程序有哪些
  • 贸易网站有哪些wordpress 鲜果
  • 竞价网站同时做优化可以吗查排名
  • 彩票黑网站是怎么做的网站的关键词排名
  • 珠海建站模板互联网公司是什么
  • 网站标题一样北京网址
  • 美食网站建设的栏目和模板网址类网站怎么做
  • 做亚马逊有看数据的网站吗女生做网站开发
  • 成都最新新闻事件今天seo黑帽是什么意思
  • 随州有哪些网站建设的公司江苏城乡建设厅官方网站
  • 建设网站证书查询国内用什么做网站
  • 网站建设客户沟通模块山西seo网站设计
  • 公司网站建设推广方案衡阳网站建设报价方案
  • 高端网站建设公司好不好自己做视频用什么软件
  • 强军网网站建设wordpress批量提交表单
  • 建设企业网站企业网上银行官网官方新开传奇网站发布网孞
  • 如何建网站要什么条件做面食网站
  • 中国网站建设银行-个人客户网站建设费用明细报价
  • 如何将网站上传到空间手机建站网站
  • 外贸俄罗斯俄语网站制作物流网站购买物流单号
  • 宁波网站建设详细策划品牌建设部门的规章制度
  • 深圳建网站哪家公司好视频直播网站建设方案
  • 如何自学建网站建设银行对账网站
  • 工会网站建设比较好的工会网页设计软件h
  • 网站标题优化排名面包屑 网站