2、枚举(Enum) 枚举是一种自定义的数据类型,它可以表示多个可能的值。枚举使用enum关键字定义,并可以包含不同的变体(variant)。 以下是一个枚举的示例: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 enum Fruit { Apple, Banana, Orange, } fn main() { let fruit: Fruit
enum定义时可以使用#[repr(Int)]修饰,Int就是Rust的整数类型(u8, isize这种)。对于C风格enum和没有变体的enum,repr定义了其需要使用对应整数类型的ABI(大小,对其和调用时的转换)。#[repr(C)]目前只是让Rust编译器尝试对enum选用C编译器使用的各种整型。 此RFC规定了两种兼容C语言的enum内存布局。 在非C风格的...
("size of PValue::str:{}",size_of_val(&PValue::String("hello rust,here's my first rust"))); } 输出结果 1 2 3 4 size of PValue:24 size of PValue::u8:24 size of PValue::u64:24 size of PValue::str:24 可以看出来,enum的内存大小是以其中最大项的内存来分配的。enum每一项都...
自定义类型主要指的是通过使用结构体(struct)和枚举(enum)来创建的数据类型。这两种类型允许开发者定义和使用更丰富且符合业务逻辑的数据结构。 结构体(Struct) 结构体是将零个或多个不同类型的数据聚合到一个复合类型中的一种方式。他们在概念上类似于其他语言中的类(但没有继承功能),是用于创建自定义数据类型的...
2、枚举(Enum) 四、其他数据类型 1、切片(Slice) 2、Option类型 3、Result类型 总结 导言 Rust是一种现代的、安全的系统编程语言,注重内存安全和并发性。在Rust中,数据类型是程序中最基本的构建块之一。本篇博客将详细解释Rust的各种数据类型,并提供相关代码示例。
(mem::size_of::<Example3>(), mem::size_of::<u16>()); 枚举类enum的C内存布局 突破“枚举”字面含义的束缚,Rust的创新使Rust enum与传统计算机语言中的同类项都不同。Rust枚举类 既包括:C风格的“轻装”枚举 — 仅标记状态,却不记录细节数据。 也支持:Rust风格的“重装”枚举 — 标记状态的同时也...
enum HTTPStatus { Ok = 200, NotFound = 404, } 示例中,最大变体值为 404 ,在内存中至少需要 2 个字节来存储,因此枚举的每个变体都占用 2 字节。 在下一个示例中,枚举有 3 个变体: enum Data { Empty, Number(i32), Array(Vec<i32>), ...
enum Message { IncrementPressed, DecrementPressed,}impl Sandbox for Counter { type Message = Message; fn new() -> Self { Self::default() } fn title(&self) -> String { String::from('Counter - Iced') } fn update(&mut self, message: Message) { match message { Message::Increment...
// 当指定值的时候,值必须是 isize 类型enum Color { R = 125, G = 223, B, } fn main() { println!("R = {}", Color::R as u8); println!("G = {}", Color::G as u8); println!("B = {}", Color::B as u8); /* R = 125 G = 223 B = 224 */ }枚举的成员 B 没...
通过使用enum来定义枚举值。 enum Gender { Boy, Girl, } 枚举值通常使用驼峰书写。通过::语法实例化枚举值 let boy = Gender::Boy; 可以将枚举作为类型定义在结构体中。这样字段gender的值只能是枚举中定义的。 struct User { name: String, age: i32, ...