3、字符串(String) 三、自定义数据类型 1、结构体(Struct) 2、枚举(Enum) 四、其他数据类型 1、切片(Slice) 2、Option类型 3、Result类型 总结 导言 Rust是一种现代的、安全的系统编程语言,注重内存安全和并发性。在Rust中,数据类型是程序中最基本的构建块之一。本篇博客将详细解释Rust的各种数据类型,并提供相...
2、枚举(Enum) 枚举是一种自定义的数据类型,它可以表示多个可能的值。枚举使用enum关键字定义,并可以包含不同的变体(variant)。 以下是一个枚举的示例: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 enum Fruit { Apple, Banana, Orange, } fn main() { let fruit: Fruit = Fruit::Apple; match ...
Rust doesn’t have the null feature that many other languages have. The problem with null values is that if you try to use a null value as a not-null value, you'll get an error of some kind. Rust 是通过引入 Option 这个 enum 类型,来解决 Null 问题的。 我觉得 Option 的设计非常棒,配...
可见,这里的Data确实是支持struct、enum、union三种结构的,但我们的Builder宏只支持struct,所以先忽略另外两个。 我们看DataStruct的定义: pub struct DataStruct { pub struct_token: Struct, pub fields: Fields, pub semi_token: Option<Semi>, } 它包含了一个struct的Token,一些字段Fields,以及一个可选的...
publicError(intcode,stringmessage) { this.code=code; this.message=message; } } 这也是C#的enum鸡肋的地方。当然这并不是枚举了,只不过到达了相似效果。 接着我们来看Java的enum,就会发现它比较好一些了。还拿上面这个例子来说,比如: 1 2 3
enum Option<T> { Some(T), None, } 这个枚举有两个变体: Some(T):表示存在一个值,值的类型为T。 None:表示没有值。 在第5行中,next字段的类型为Option<Rc<Node>>,其含义是这个字段可以有两种状态: Some(Rc<Node>):表示存在下一个节点,并且这个节点是通过引用计数智能指针Rc进行引用的。
除基本类型外最常用的类型是字符串String、结构体struct、枚举enum、向量Vector和字典HashMap(也叫哈希图)。string、struct、enum、vector、HashMap的数据都是在堆内存上分配空间,然后在栈空间分配指向堆内存的指针信息。函数也可以算是一种类型,此外还有闭包、trait。这些类型各有实现方式,复杂度也高。
fnmain(){// 指定不同的泛型参数类型lets=MyStruct::<String>{value:"Hello".to_string()};letresult=my_function::<f64>(3.14);println!("MyStruct: {:?}",s);println!("Result: {}",result);} 在上述例子中,我们在使用MyStruct和my_function时,显式指定了泛型参数的具体类型,从而选择了不同的类...
两次调用to_string分别创建“hello”、“world” String;(self_8以及v8,注意!这里由于RVO,函数使用第一个参数传递返回值) 使用vec存储两个String。 可以看到整体的代码变得可读性不是很高,出现了与源代码有很多出入的部分,例如std::catch_unwind、<alloc::vec::Vec<TA>,_as_core::fmt::Debug>::fmt等,这部分...
enumResult<T,E>{ Ok(T), Err(E), } fndivide(a:i32,b:i32)->Result<i32,String>{ ifb==0{ Err(String::from("Division by zero")) }else{ Ok(a/b) } } Option: 实例 fnget_element(index:usize,vec:&Vec<i32>)->Option<i32>{ ...