`

rust 枚举

    博客分类:
  • rust
 
阅读更多
enum Color{
    Red = 0xff0000,
    Green = 0x00ff00,
    Blue = 0x0000ff,
}

enum Student{
    Boy(i32),
    Girl(i32,i32),
}

enum Opt{
    Some(i32),
    None,
}

fn main() {
    println!("red:#{:06x}",Color::Red as i32);
    println!("green:#{:06x}",Color::Green as i32);

    let x: fn(i32) -> Student = Student::Boy;
    let y: fn(i32,i32) -> Student = Student::Girl;
    let x1 = Student::Boy(11);
    let y1 = Student::Girl(11,143);

    let o = Some(33);
    let oNum = o.unwrap();//unwrap可以将Some(33)中的数字取出,如果在不确定的情况下使用unwrap,可能会导致运行时错误
    println!("oNum:{}",oNum);
    match o {
        Some(n) => println!("num:{}",n),
        None => (),
    }
}

red:#ff0000
green:#00ff00
oNum:33
num:33


//枚举可以是多种数据类型
#[derive(Debug)]
enum Color {
    Red(u32,u32,u32),
    Green(String),
    Blue{rgb: (u32,u32,u32),name: String},
}

fn value_in_color(c : Color) -> u8{
    match c {
        Color::Red(u32,_,_)=> 1,    //相同类型用_
        Color::Green(String) => 2,
        Color::Blue{rgb: (u32,_,_),name: String} => {
            print!("this is blue.");
            3
        }
    }
}

fn plus_one(x:Option<i32>) -> Option<i32> {
    match x {
        None => None,
        Some(i) => Some(i+1),
    }
}

fn main() {
    let red = Color::Red(200,200,200);
    let green = Color::Green(String::from("green"));
    let blue = Color::Blue{rgb:(100,100,100),name:String::from("blue")};
    println!("{:?}",red);
    println!("{:?}",green);
    println!("{:?}",blue);
    println!("value is:{}",value_in_color(blue));

    let num = Some(5);
    println!("plus one:{:?}",plus_one(num));

    let t = Some(6);
    //if let 和match有点像,是一个语法糖
    if let t = Some(7){
        println!("{:?}",t.unwrap());
    }
}


Red(200, 200, 200)
Green("green")
Blue { rgb: (100, 100, 100), name: "blue" }
this is blue.value is:3
plus one:Some(6)
7

分享到:
评论

相关推荐

    rust-enum-vs-trait-benchmark:简单的基准来比较Rust枚举和特征的性能

    锈枚举vs特征基准简单的基准来比较Rust枚举和特征的性能大约基准测试结果在Windows 10的Core i7-3770 @ 3.4GHz上运行running 4 teststest test_enum_variant ... ignoredtest test_trait_variant ... ignoredtest ...

    monotonic_solver:设计为易于与Rust枚举表达式一起使用的单调求解器

    单调解算器设计为易于与Rust枚举表达式一起使用的单调求解器这可以用来: 人工智能常识的研究模型在学习逻辑和语言时测试推理规则生成故事情节搜索和提取数据在,它是具有类似Prolog语法的Avatar Logic的实验性实现...

    linear_solver:设计为易于与Rust枚举一起使用的线性求解器

    linear_solver 设计为易于与Rust枚举一起使用的线性求解器。 这是一个用于自动定理证明的库。 线性求解意味着可以用其他事实代替某些事实。 该技术还可用于使定理证明更加有效。 如果您正在寻找无法删除事实的求解器...

    宏柴油衍生枚举-在数据库中使用枚举的柴油衍生样板-Rust开发

    柴油派生枚举直接将Rust枚举与柴油ORM一起使用。 最新版本1.0.0已针对柴油1.4和Rustc 1.39.0进行了测试。 它可以与柴油衍生枚举一起使用。将Rust枚举直接与柴油ORM搭配使用。 最新版本1.0.0已针对柴油1.4和Rustc ...

    iso639:iso639 rust枚举和实用程序

    在Rust编程语言中,有一套名为`iso639`的库,它提供了一个枚举类型,该类型包含了ISO 639标准中的所有语言代码。这个库使得开发者可以方便地在程序中处理和验证语言代码,同时提供了相关的实用工具,以帮助实现更...

    Rust 实战小项目:游戏四大金刚: 贪吃蛇、五子棋、俄罗斯方块、扫雷

    在 Rust 实现中,我们使用了 Rust 的枚举类型来表示棋子的状态,并利用了模式匹配和迭代器来检查游戏是否结束。通过这个项目,开发者可以学习如何使用 Rust 进行游戏逻辑的实现,并理解 Rust 的枚举类型和模式匹配的强大...

    rust-book-chinese.zip_Rust编程_rust_rust 中文手册_rust系统

    Rust还引入了枚举模式匹配,增强了代码的可读性和可维护性。 3. **内存管理与所有权**:Rust最引人注目的特性之一是其所有权系统,它保证了内存安全而无需垃圾回收机制。每个值都有一个唯一的“所有者”,并且当...

    Rust参考手册 中文版(带完整目录)

    2. **类型系统**:深入讨论Rust的类型系统,包括静态类型、枚举、结构体、元组、引用和智能指针。Rust的类型系统是其强大安全性的重要组成部分。 3. **函数和闭包**:讲解Rust中的函数定义、参数传递、返回值以及...

    The Rust Programming Language (Covers Rust 2018).rar

    3. **结构体与枚举**:Rust中的结构体用于组合数据,枚举则允许定义一组相关的值。枚举可以包含关联数据,称为枚举变体,这在处理多种情况时非常有用。 4. **函数与闭包**:Rust支持函数和匿名函数(闭包)。闭包...

    另一个用Rust编写的操作系统-Rust综述

    - **PCI总线设备支持**:实现了PCI总线设备的枚举、基址寄存器(BAR)获取和中断设置等功能。 - **网络功能增强**:添加了更多网络相关的系统调用,如sys_socket、sys_close、sys_connect等,支持了ping、UDP和TCP...

    Rust 嵌入式开发教程之 STM32F103

    在代码编写过程中,Rust 的结构体和枚举可以帮助我们更好地组织和管理资源。例如,可以定义一个结构体表示 STM32F103 的某个功能模块,然后通过方法实现具体的硬件操作。这样,代码既保持了清晰的结构,又实现了低...

    Python-EroDir用Rust编写的快速Web目录文件枚举工具

    【Python-EroDir:Rust编写的Web目录文件枚举工具】 Python-EroDir是一款基于Rust编程语言构建的高效Web目录和文件枚举工具,主要用于网络安全领域中的渗透测试和漏洞发现。它提供了对目标网站的快速扫描能力,能够...

    diesel-derive-enum:将枚举与Diesel ORM一起使用

    直接将Rust枚举与 ORM一起使用。 最新版本1.1.1已针对diesel 1.4和rustc 1.39.0进行了测试。 它可能适用于旧版本。 注意:当前的总泵分支跟踪diesel总泵,并且不适用于diesel 1.x 用法示例: 货代 [ dependencies...

    variant_access:https:docs.rsvariant_access_traits

    变体访问 一组特征和宏,用于基于C ++标准库中的std :: variant API为Rust枚举定义通用api基本用法考虑以下枚举: enum Enum { F1 ( i32 ), F2 ( bool )} 当然,我们可以直接使用字段名称和match语句使用此类枚举。...

    Rust 程序设计语言(第二版) 简体中文版

    ### Rust 程序设计语言(第二版)简体中文版 #### 入门指南 在本书《Rust 程序设计语言》第二版简体中文版中,作者们致力于帮助读者理解 Rust 这一现代系统级编程语言的基础与进阶特性。此书涵盖了从安装到实际...

    通过例子学Rust 中文版(带完整目录)

    2. **结构体与枚举(struct 和 enum)**:Rust中的结构体用于定义自定义数据类型,而枚举则允许我们定义一组相关的值。结构体和枚举是构建复杂数据模型的基础。 3. **函数(Functions)**:Rust中的函数可以有参数...

    rust示例教程rust-by-example

    Rust编程语言是一种系统编程语言,它注重安全性、速度和并发性。Rust by Example是一个在线教程,它提供了一系列示例来展示如何使用Rust编程语言进行开发。该教程系统地展示了Rust的各种编程语法和概念,旨在帮助...

    cannolib:支持Cannoli编译代码的Rust库。 这减轻了大量翻译工作

    种类封装类型是一个称为Value的Rust枚举,并在定义。 可以将更复杂的类型定义为它们自己的模块中的struct或enum,它们可以位于目录中。内置功能和模块Python 3.6.5具有多种内置函数和模块,Cannolib通过模块提供了...

    enum_rust

    回到枚举的话题,Rust枚举的一个独特之处是它们是不可变的(immutability)和不可重用的(non-reuseable)。这意味着一旦创建了一个枚举实例,就不能改变它的值,也不能将其赋值给另一个变量。这种设计增强了类型...

    Rust代码和资源的整理清单汇总-全网最全,快速精通rust

    1. **Rust基础知识**:Rust的基础包括变量、数据类型(如整型、浮点型、布尔型、枚举、结构体)、作用域、控制流(if/else、循环、匹配)、函数、引用和所有权系统。 2. **所有权系统**:Rust的核心特性之一,它...

Global site tag (gtag.js) - Google Analytics