zoukankan      html  css  js  c++  java
  • 【Rust】枚举

    环境

    • Rust 1.55.0
    • VSCode 1.59.1

    概念

    参考:https://doc.rust-lang.org/stable/rust-by-example/custom_types/enum.html

    enum 关键字允许创建一个从数个不同取值中选其一的枚举类型(enumeration)。
    任何一个在 struct 中合法的取值在 enum 中也合法。

    示例

    enum WebEvent {
        // 单元类型的枚举
        PageLoad,
        PageUnload,
        // 元组类型的枚举
        KeyPress(char),
        Paste(String),
        // C 类型的枚举
        Click { x: i64, y: i64 },
    }
    

    单元类型

    enum WebEvent {
        // 单元类型的枚举
        PageLoad,
        PageUnload,
    }
    

    元组类型

    enum WebEvent {
        // 元组类型的枚举
        KeyPress(char),
        Paste(String),
    }
    

    C 类型

    enum WebEvent {
        // C 类型的枚举
        Click { x: i64, y: i64 },
    }
    

    简单使用

    enum WebEvent {
        // 单元类型的枚举
        PageLoad,
        PageUnload,
        // 元组类型的枚举
        KeyPress(char),
        Paste(String),
        // C 类型的枚举
        Click { x: i64, y: i64 },
    }
    
    fn inspect(event: WebEvent) {
        match event {
            WebEvent::PageLoad => println!("page loaded"),
            WebEvent::PageUnload => println!("page unloaded"),
            WebEvent::KeyPress(c) => println!("pressed '{}'.", c),
            WebEvent::Paste(s) => println!("pasted \"{}\".", s),
            WebEvent::Click { x, y } => {
                println!("clicked at x={}, y={}.", x, y);
            }
        }
    }
    
    fn main() {
        let pressed = WebEvent::KeyPress('x');
        // `to_owned()` creates an owned `String` from a string slice.
        let pasted = WebEvent::Paste("my text".to_owned());
        let click = WebEvent::Click { x: 20, y: 80 };
        let load = WebEvent::PageLoad;
        let unload = WebEvent::PageUnload;
    
        inspect(pressed);
        inspect(pasted);
        inspect(click);
        inspect(load);
        inspect(unload);
    }
    

    总结

    了解了 Rust 中的枚举类型,有三种类型的枚举风格,简单使用了枚举类型。

    附录

  • 相关阅读:
    final修饰符
    数组知识点
    session的作用范围(转)
    c++之list学习
    C++之重载操作符
    C++之浅拷贝构造函数与深拷贝构造函数
    C++之友元
    C++之共有继承、保护继承、私有继承
    C++之类静态成员变量和静态成员函数
    C源程序到可执行文件的四个过程
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/15626858.html
Copyright © 2011-2022 走看看