NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
Ordering::Less,Ordering::Equal和Ordering::Greater,这个特殊的枚举是标准库的一部分,rust代码可以导入它。 use std::cmp::Ordering::*;//一次性导入Ordering所有枚举元素 导入之后可以直接用Less,Equal,Greater,不用再加Ordering:: 在内存中,C语言风格的枚举以整型存储,偶尔给枚举指定整型值比较有用,比如: enum HttpStatus { Ok = 200, NotModified = 304, NotFound = 404, ... } 如果不手动指定,rust会自动分配,从0开始。 默认情况下,rust会以足以容纳所有枚举值的最短位数的的整型类型来分配空间。大多数情况下只有一个字节。 assert_eq!(size_of::<Ordering>(), 1); assert_eq!(size_of::<HttpStatus>(), 2); 你可以用#[repr]覆盖rust对枚举的内存表示。 转换C语言风格的枚举成为整型是允许的,比如HttpStatus::Ok as i32,反过来把整型转换成枚举是不允许的。因为不是所有整型都有对应的枚举值。不过你可以写自己的转换函数,返回一个Option类型,遇到匹配失败的整数返回None。 一个包enum_primitive包含一个宏有类似的代码。 和结构体类似,可以给枚举添加注解#[derive(PartialEq)]以实现==操作符。 枚举也可以有方法,和结构体语法一样。