[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

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

hdu 2489 (dfs枚举 + prim)

题意: 对于一棵顶点和边都有权值的树,使用下面的等式来计算Ratio 给定一个n 个顶点的完全图及它所有顶点和边的权值,找到一个该图含有m 个顶点的子图,并且让这个子图的Ratio 值在所有m 个顶点的树中最小。 解析: 因为数据量不大,先用dfs枚举搭配出m个子节点,算出点和,然后套个prim算出边和,每次比较大小即可。 dfs没有写好,A的老泪纵横。 错在把index在d

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla