2、枚举(Enum) 枚举是一种自定义的数据类型,它可以表示多个可能的值。枚举使用enum关键字定义,并可以包含不同的变体(variant)。 以下是一个枚举的示例: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 enum Fruit { Apple, Banana, Orange, } fn main() { let fruit: Fruit = Fruit::Apple; match ...
enum Data { Empty, Number(i32), Array(Vec<i32>), } Empty变体不存储任何其它数据,Number变体中有一个 i32,Array变体保存了一个元素类型为 i32 的 Vec。首先来看一下Array变体的内存布局: 首先是一个整数标记,这里就是 2 。然后是三个 usize 用来存储 Vec 。编译器还将添加一些 padding 以满足内存对齐。
number-=1; } for 循环 实例 fornumberin1..4{ println!("{}!",number); } 所有权 (Ownership) Rust 中的所有权是独特的内存管理机制,核心概念包括所有权 (ownership)、借用 (borrowing) 和引用 (reference)。 所有权规则: Rust 中的每个值都有一个所有者。
enum HttpStatus { Ok = 200, NotFound = 404, } 本例中,Rust会选择占用2 byte的i16来存储enum(以满足存储404)。 接着我们来看更复杂一些的Enum: Empty, Number(i32), Array(Vec<i32>), 对于这类有具体数据结构的Enum,每一个Enum中的元素都有一个 1 byte的tag,tag用于标识属于Enum中具体哪个变量。此...
enumOption<T>{None,Some(T),} 注意这里的T是一种泛型,大家应该都清楚是啥了吧。。rust中的泛型会在后面讲。 由于Some<T>和None很常用,所以rust提供了语法糖,让你不需要添加Option<T>::这个前缀。比如: letsome_number=Some(5);letsome_char=Some('e');letabsent_number:Option<i32>=None; ...
enum IpAddr { V4(String), V6(String), } let home = IpAddr::V4(String::from("127.0.0.1")); let loopback = IpAddr::V6(String::from("::1")); println!("{:?}", home); println!("{:?}", loopback); } cargo run Finished dev [unoptimized + debuginfo] target(s) in 0.63s ...
2、枚举(Enum) 四、其他数据类型 1、切片(Slice) 2、Option类型 3、Result类型 总结 导言 Rust是一种现代的、安全的系统编程语言,注重内存安全和并发性。在Rust中,数据类型是程序中最基本的构建块之一。本篇博客将详细解释Rust的各种数据类型,并提供相关代码示例。
enumWebEvent{// 一个 `enum` 可以是单元结构体(称为 `unit-like` 或 `unit`),PageLoad, PageUnload,// 或者一个元组结构体,KeyPress(char),Paste(String),// 或者一个普通的结构体。Click { x:i64, y:i64} } 访问枚举值 // 方法一:WebEvent::PageLoad// 方法二:useWebEvent::{PageLoad};/...
然后使用 match 表达式对 number 进行匹配。首先,Rust 检查第一个 arm,即模式 1,由于 number 不等于 1,因此不会执行该代码块。接着检查第二个 arm,即模式 2,同样不匹配。最后,Rust 检查第三个 arm,即模式 3,由于 number 等于3,因此执行相应的代码块,输出 Three。 如果没有任何一个模式匹配成功,最后的 _...
然后enum 也可以像 C 语言的枚举类型一样使用。// 这些枚举成员都有隐式的值// Zero 等于 0,one 等于 1,Two 等于 2 enum Number { Zero, One, Two, } fn main() { // 既然是隐式的,就说明不能直接用 // 需要显式地转化一下 println!("Zero is {}", Number::Zero as i32); println!("...