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代码的开发和维护带来了便利。