首页 > 其他分享 >Rust 中的枚举有啥不同

Rust 中的枚举有啥不同

时间:2024-07-16 09:21:45浏览次数:17  
标签:WebSocket 不同 enum 枚举 let i32 Rust

提问

Rust 中的枚举有啥不同

回答

  1. 枚举中每一项可以有自己的数据类型
enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}
  1. 可以用来做统一流程处理
    类似于其他语言中的接口

同一化类型
最后,再用一个实际项目中的简化片段,来结束枚举类型的语法学习。

例如我们有一个 WEB 服务,需要接受用户的长连接,假设连接有两种:TcpStream 和 TlsStream,但是我们希望对这两个连接的处理流程相同,也就是用同一个函数来处理这两个连接,代码如下:

fn new (stream: TcpStream) {
  let mut s = stream;
  if tls {
    s = negotiate_tls(stream)
  }

  // websocket是一个WebSocket<TcpStream>或者
  //   WebSocket<native_tls::TlsStream<TcpStream>>类型
  websocket = WebSocket::from_raw_socket(
    s, ......)
}

此时,枚举类型就能帮上大忙:

enum Websocket {
  Tcp(Websocket<TcpStream>),
  Tls(Websocket<native_tls::TlsStream<TcpStream>>),
}

  1. Option 用来处理空值
    取出Option中的值用.unwrap();
pub  fn demo(){
    let x: i8 = 5;
    let y: Option<i8> = Some(5);
    let z=y.unwrap();
}

引用

https://course.rs/basic/compound-type/enum.html
https://rustwiki.org/zh-CN/reference/items/enumerations.html

标签:WebSocket,不同,enum,枚举,let,i32,Rust
From: https://www.cnblogs.com/wuhailong/p/18304480

相关文章

  • LeetCode - #96 不同的二叉搜索树(Top 100)
    文章目录前言1.描述2.示例3.答案关于我们前言本题为LeetCode前100高频题我们社区陆续会将顾毅(Netflix增长黑客,《iOS面试之道》作者,ACE职业健身教练。)的Swift算法题题解整理为文字版以方便大家学习与阅读。LeetCode算法到目前我们已经更新到94期,......
  • k3cloud 简单账表根据不同月份统计物料领用情况(最近一年,行转列)
    importclrclr.AddReference("System")clr.AddReference("Kingdee.BOS")clr.AddReference("Kingdee.BOS.Core")clr.AddReference("Kingdee.BOS.DataEntity")clr.AddReference("Kingdee.BOS.App")clr.AddReference(&q......
  • rust+openGL
    如果是C语言,适合用Nuklear如果是C++语言,适合用ElementsC++GUIlibrary如果是Go语言,适合用therecipe/qt如果是Python,适合用Tkinter如果是JS,用Vue+Bootstrap+ElementUI最为简单如果是小程序,用官方组件+WeUI组件如果是C#,直接用.NetFramework就可以了但是,每个语言都有自己擅长做的......
  • 搜索枚举_冯政玮
    搜索枚举_冯政玮A-循环赛搜索剪枝题面\(n\) 支队伍比赛,每两支队伍比赛一次,平 \(1\) 胜 \(3\) 负 \(0\)。给出队伍的最终得分,求有多少种可能的分数表。平1胜3负0指:若两支队伍打平,则各得到 \(1\) 分;否则,胜利的队伍得到 \(3\) 分,被打败的队伍得到 \(0\) 分。......
  • 关于 Scanner 类读取输入时换行符处理及不同方法的差异总结
    Scannerscanner=newScanner(System.in);System.out.print("请输入一个整数:");intnum=scanner.nextInt();System.out.print("请输入一个字符串:");Stringstr=scanner.nextLine();请输入一个整数:5......
  • Java中的枚举类型详解
    Java中的枚举类型详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java中的枚举类型。枚举类型在Java中是一种特殊的数据类型,它允许我们定义一组命名的常量,这些常量在整个程序中保持不变。本文将详细介绍枚举类型的定义、用法以及在......
  • 0181-汇编调用 Rust
    环境Time2022-11-12WSL-Ubuntu22.04QEMU6.2.0NASM2.15.05Rust1.67.0-nightly前言说明参考:https://os.phil-opp.com/set-up-rust/目标从汇编代码中调用Rust代码。该篇基于之前编写的进入64位模式的汇编代码。切换到nightly版本切换命令:rustupoverridese......
  • 什么是枚举类?
    特点:用Enum关键字定义类枚举默认继承了java.long.Enum而不是Object枚举的默认构造方法只能用private修饰符,如果构造方法省略修饰符,则默认使用privatte修饰符.枚举所有的对象(实例)必须在枚举中显示列出,否则这个枚举将永远不能创建实例对象.枚举列出的对象,系统......
  • Qt Creator导入不同Qt版本
    1.下载好想要使用的Qt版本2.3.添加Qt版本、编译器和调试器4.名称自己设置,选择好上面添加的编译器,调试器和Qt版本即可......
  • 提升漏洞挖掘效率:详解RustScan端口快速扫描工具
    在漏洞挖掘过程中,梳理目标站点的资产面是至关重要的一步。这一过程通常需要进行全量端口扫描,以发现目标站点上所有可能的开放端口。然而,传统的端口扫描工具往往需要大量时间来完成这一任务,特别是在面对大量端口时。这不仅延长了整个漏洞挖掘的时间,还可能导致关键漏洞的发现......