[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

相关文章

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

python中的鸭子类型详解

《python中的鸭子类型详解》鸭子类型是Python动态类型系统的灵魂,它通过强调“行为”而非“类型”,赋予了代码极大的灵活性和表现力,本文给大家详细介绍python中的鸭子类型,感兴趣的朋友一起看... 目录1. 核心思想:什么是鸭子类型?2. 与“传统”静态类型语言的对比3. python 中无处不在

Java枚举类型深度详解

《Java枚举类型深度详解》Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文... 目录前言1. enum关键字的使用:定义枚举类型什么是枚举类型?如何定义枚举类型?使用枚举类型:2.

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Rust 智能指针的使用详解

《Rust智能指针的使用详解》Rust智能指针是内存管理核心工具,本文就来详细的介绍一下Rust智能指针(Box、Rc、RefCell、Arc、Mutex、RwLock、Weak)的原理与使用场景,... 目录一、www.chinasem.cnRust 智能指针详解1、Box<T>:堆内存分配2、Rc<T>:

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十