2.9.2 KV存储 HashMap KV 存储 HashMap 和动态数组一样,HashMap 也是 Rust 标准库中提供的集合类型,但是又与动态数组不同,HashMap 中存储的是一一映射的 KV 键值对,并提供了平均复杂度为 O(1) 的查询方法,当我们希望通过一个 Key 去查询值时,该类型非常有用,以致于 Go 语言将该类型设置成了语言级别的内置特性。 Rust 中哈希类型(哈希映射)为 HashMap&l 2025-01-05 rust > rust圣经 > rust基础 #rust
2.9.1 动态数组 Vector 动态数组 Vector 动态数组类型用 Vec<T> 表示,事实上,在之前的章节,它的身影多次出现,我们一直没有细讲,只是简单的把它当作数组处理。 动态数组允许你存储多个值,这些值在内存中一个紧挨着另一个排列,因此访问其中某个元素的成本非常低。动态数组只能存储相同类型的元素,如果你想存储不同类型的元素,可以使用之前讲过的枚举类型或者特征对象。 总之,当我们想拥有一个列表,里面都 2025-01-05 rust > rust圣经 > rust基础 #rust
2.9 集合类型 集合类型 集合在 Rust 中是一类比较特殊的类型,因为 Rust 中大多数数据类型都只能代表一个特定的值,但是集合却可以代表一大堆值。而且与语言级别的数组、字符串类型不同,标准库里的这些家伙是分配在堆上,因此都可以进行动态的增加和减少。 瞧,第一个集合排着整齐的队列登场了,它里面的每个元素都雄赳赳气昂昂跟在另外一个元素后面,大小、宽度、高度竟然全部一致,真是令人惊叹。 它就是 Vecto 2025-01-05 rust > rust圣经 > rust基础 #rust
2.8.4 进一步深入特征 深入了解特征 1. 关联类型 在方法一章中,我们讲到了关联函数,但是实际上关联类型和关联函数并没有任何交集,虽然它们的名字有一半的交集。 关联类型是在特征定义的语句块中,申明一个自定义类型,这样就可以在特征的方法签名中使用该类型: 123456789pub trait Iterator { // type Item;:这是一个关联类型(associated type), 2025-01-05 rust > rust圣经 > rust基础 #rust
2.8.3 特征对象 特征对象 在上一节中有一段代码无法通过编译: 1234567891011fn returns_summarizable(switch: bool) -> impl Summary { if switch { Post { // ... } } else { 2025-01-05 rust > rust圣经 > rust基础 #rust
2.8.2 特征 Trait 特征 Trait 特征定义了一组可以被共享的行为,只要实现了特征,你就能使用这组行为。 1. 定义特征 如果不同的类型具有相同的行为,那么我们就可以定义一个特征,然后为这些类型实现该特征。定义特征是把一些方法组合在一起,目的是定义一个实现某些目标所必需的行为的集合。 例如,我们现在有文章 Post 和微博 Weibo 两种内容载体,而我们想对相应的内容进行总结,也就是无论是文章内容,还是 2025-01-05 rust > rust圣经 > rust基础 #rust
2.8.1 泛型 Generics 泛型 Generics 实际上,泛型就是一种多态。泛型主要目的是为程序员提供编程的便利,减少代码的臃肿,同时可以极大地丰富语言本身的表达能力,为程序员提供了一个合适的炮管。 123456789fn add<T>(a:T, b:T) -> T { a + b}fn main() { println!("add i8: 2025-01-05 rust > rust圣经 > rust基础 #rust
2.7 方法 方法 Method 在 Rust 中,方法和对象成对出现: 1object.method() 例如读取一个文件写入缓冲区,如果用函数的写法 read(f, buffer),用方法的写法 f.read(buffer)。不过与其它语言 class 跟方法的联动使用不同(这里可能要修改下),Rust 的方法往往跟结构体、枚举、特征(Trait)一起使用,特征将在后面几章进行介绍。 1. 2025-01-05 rust > rust圣经 > rust基础 #rust
2.6.4 全模式列表 全模式列表 1. 匹配字面值 12345678let x = 1;match x { 1 => println!("one"), 2 => println!("two"), 3 => println!("three"), _ => println!("anything 2025-01-05 rust > rust圣经 > rust基础 #rust