Rust 集合与字符串
Rust 集合与字符串
集合
Rust 的集合是用来存储多个值的数据结构。它由两种不同的类型:哈希集和哈希映射组成。哈希集是一组唯一的值,而哈希映射则是将键和值进行映射的集合。
哈希集
使用 HashSet
能够快速地检查一个元素是否在数组中已经存在。从Rust经过渲染的HashSet开始,这个结构的使用非常接近于一个数组。我们可以通过下列命令来创建一个 HashSet
:
use std::collections::HashSet;
fn main() {
let mut set = HashSet::new();
set.insert(1);
set.insert(2);
set.insert(3);
println!("{:?}", set); // 输出 {1, 2, 3}
}
哈希映射
使用 HashMap
可以将一组键映射到对应的值上。以下代码将 HashMap
的键(类型)映射到值(整数)。
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("haha", 1);
map.insert(&"hoho", 2);
println!("{:?}", map); // 输出 {"haha": 1, "hoho": 2}
}
字符串
在Rust中,字符串是一个Unicode字符的存储序列。字符串的类型是 &str
,它是一种不可变的切片类型,拥有一个指向开始位置的指针和一个长度(比数组有一个额外的用于记录其长度的信息)。
字符串切片
Rust的字符串引用类型是字符串切片类型 “Str”。“Str” 是一个不可变类型,其定义形式为 &str
。字符串切片是一组连续的字符,可以使用 .len()
访问其长度。可以通过索引从字符串中获取字节数据。示例代码:
let str = "hello"; // str: &'static str
let byte: u8 = str.as_bytes()[0];
let mystr = &str[2..4]; // mystr: &str
字符串字面量
创建一个字符串字面量可以使用两个双引号,例如 “foobar”。Rust 中没有字符串类型的不可变性,但 Rust 的字符串字面量是不可变的。不过,通过在字符串字面量前添加 mut
可以使其可变。示例代码:
let mut my_str = "Goodbye, world!";
println!("{:?}", my_str);
my_str = "Hello, world!"; // 不能使用 push_str() 函数
println!("{:?}", my_str);
字符串实体
Rust 中所有类型(包括数字和字符)都有一个自己的类型名称,例如字符类型为 char
。Rust 中还可以使用与标准ASCII字符不同的unicode字符.例如:
let my_string = "Hello, 🦀!";
字符串拼接
使用 +
运算符将两个字符串拼接起来。示例代码:
let greeting = "Hello";
let greeting_string = String::from(greeting);
let name = "Rust";
let message = greeting.to_string() + ", " + name;
字符串格式化
可以使用类似printf的语法格式化字符串。示例代码:
let name = "Rust";
let message = format!("Hello, {}!", name);
结论
Rust 集合与字符串提供了很多有用的操作,如查找、插入、删除、迭代等。它们都是非常重要的数据结构,无处不在,让您的代码变得更加简洁、易读和易于维护。同时,字符串在Rust中也有其特有的实现机制,使其更加高效和优美,为Rust代码的开发和维护带来了便利。