2、枚举(Enum) 枚举是一种自定义的数据类型,它可以表示多个可能的值。枚举使用enum关键字定义,并可以包含不同的变体(variant)。 以下是一个枚举的示例: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 enum Fruit { Apple, Banana, Orange, } fn main() { let fruit: Fruit = Fruit::Apple; match ...
enum HTTPStatus { Ok, NotFound, } 在内存中,它们被存储为从 0 开始的整数。 Rust 编译器会选择能够存储该枚举类型的最大的变体(variant)中最短的整型。示例中最大的变体为 1,它只需要 1 个字节就能存储。 你也可以为各个变体指定其整数值: enum HTTPStatus { Ok = 200, NotFound = 404, } 示例中,...
enum被“降维”成struct 就C内存布局而言,struct的alignment是全部字段alignment中的最大值。 字段union.Variant0是单字段元组结构体,且字段类型是基本数据类型。所以,union.Variant0.alignment = union.Variant0.size = 1 Byte 字段union.Variant1是单位类型。所以,union.Variant1.alignment = 1 Byte和union.Variant...
官方给的例子是ip类型,只有v4和v6两个变体(variant) enumIpAddrKind{V4,V6,} 而获取枚举的值方式则和别的语言不一样 letfour=IpAddrKind::V4;letsix=IpAddrKind::V6; 用法和访问关联函数一样,用:: rust中的enum可不止这点功能,我们来看一个例子 enumIpAddrKind{V4,V6,}structIpAddr{kind:IpAddrKind,a...
Struct: Ancestors<'tcx> 这个结构体表示一个节点的祖先节点,它是一个迭代器,用于遍历一个节点的所有祖先节点。 Struct: LeafDef 这个结构体表示叶子节点的定义,它包含了一个类型(ty),一个原始定义(which),以及一个标志位(is_manually_defined)。 Enum: OverlapMode 这个枚举表示特化冲突的处理方式,它有三个选项...
1、结构体(Struct) 2、枚举(Enum) 四、其他数据类型 1、切片(Slice) 2、Option类型 3、Result类型 总结 导言 Rust是一种现代的、安全的系统编程语言,注重内存安全和并发性。在Rust中,数据类型是程序中最基本的构建块之一。本篇博客将详细解释Rust的各种数据类型,并提供相关代码示例。
22.Rust-Enum(枚举) 枚举enum关键字允许创建一个从数个不同取值中选其一的枚举类型(enumeration)。任何一个在 struct 中合法的取值在 enum 中也合法。 在日常生活中很常见。比如:1 年有 12 个月,1 周有 7 天。 枚举的定义 enum 枚举名称{ variant1,...
trait EnumTrait {} struct A(isize); impl EnumTrait for A {} struct B(isize); impl EnumTrait for B {} // 利用返回参数 `impl` 语法简化泛型写法,相当于 // fn<T: EnumTrait> get_a() -> T fn get_a() -> impl EnumTrait { A(42_isize) } fn main() { let A(a) = get_A...
EnumItemStruct : EnumItemDiscriminant : = Expression 还是直接看具体代码更直观: enumE1{ A,B(u8,), C{x:u8, }, }enumE2{ A =0, B =1, C = -1, } 注意E1和E2默认不能混用,你需要加上#[repr(inttype)],inttype可以是: i8,u8,i16,u16,i32,u32,i64,u64,i128,u128,isize,usize ...
enumIpAddrKind{ v4, v6 } 我们通过定义枚举 IpAddrKind 来表达这样的概念,声明该枚举需要列举出所有可能的 IP 地址种类:V4 和 V6,这也就是所谓的枚举变体(variant),或者说人话就是枚举里面的成员。现在,IpAddrKind 就是一个可以在代码中随处使用的自定义数据类型了,我们可以像下面的代码一样分别使用 IpAddr...