[rust-009]关于enum枚举类型

2024-06-11 08:48
文章标签 rust 类型 枚举 009 enum

本文主要是介绍[rust-009]关于enum枚举类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考官方文档https://doc.rust-lang.org/book/ch06-01-defining-an-enum.html

Rust的Enum,类似其他语言,但功能更复杂。

第一种:最简单的用法


#[derive(Debug)]
enum IpAddrKind {V4,V6,
}//这里,V4和V6的数据类型都是 IpAddrKind
fn main() {let four = IpAddrKind::V4;let six = IpAddrKind::V6;println!("four = {:?}", four);println!("six = {:?}", six);
}//结果输出:
/*
four = V4
six = V6
*/

第二种情况:可以在enum里增加变量。


#[derive(Debug)]
enum IpAddr {V4(String),V6(String),
}fn main() {let home = IpAddr::V4(String::from("127.0.0.1"));let loopback = IpAddr::V6(String::from("::1"));println!("home = {:?}", home);println!("loopback = {:?}", loopback);
}//结果输出:
/*
home = V4("127.0.0.1")
loopback = V6("::1")
*/

第三种情况, 可以在enum里增加多个变量


#[derive(Debug)]
enum IpAddr {V4(u8, u8, u8, u8),V6(String),
}fn main() {let home = IpAddr::V4(127, 0, 0, 1);let loopback = IpAddr::V6(String::from("::1"));println!("home = {:?}", home);println!("loopback = {:?}", loopback);
}//结果输出:
/*
home = V4(127, 0, 0, 1)
loopback = V6("::1")
*/

第四种情况,在enum放入复杂的数据类型,取代多个struct定义


#[derive(Debug)]
enum Message {Quit,//没有关联数据Move { x: i32, y: i32 },//关联一个匿名structWrite(String),//包含一个字符串ChangeColor(i32, i32, i32),//包含三个整数
}impl Message {fn call(&self) {println!("message is being called...");println!("self = {:?}", self);}
}fn main() {let m = Message::Write(String::from("hello"));m.call();println!("m = {:?}", m);
}//结果输出:
/*
message is being called...
self = Write("hello")
m = Write("hello")
*/

 

 

 

 

这篇关于[rust-009]关于enum枚举类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050697

相关文章

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式