Rust 新手程序员/字符串
使用双引号 "" 在某些文本周围创建的字符串,例如我们在开始时创建的 "Hello world!",存储在编译时创建的程序中。这意味着在运行程序时很容易找到和使用它。但是,这意味着我们在程序运行时无法更改它们,因为程序中的所有内存都以特定方式布局。另外,字符串和字符可能非常复杂。这是因为有很多事情要处理;世界不仅仅是英文字符!有很多不同的语言,很多语言有不同的字母表。有表情符号和其他特殊字符。存储这些不同字符的不同格式将使用不同的字节数。如果你使用英语,大多数情况下你会使用称为 UTF-8 的标准,该标准对大多数常见的英文字符使用 8 位(一个字节)。
在 Rust 中,有两种字符串类型来表示这种行为。有一种原始类型 'str',它只是字符串的起点和长度。这意味着对 str 的引用,或 &str,可以是对存储在程序中的字符串的引用。另一种字符串类型是 String,它将字符串存储为字节向量。由于它是一个向量,我们可以修改和更改字符串。此外,由于向量具有起点和长度,我们可以轻松地将 String 转换为 &str,尽管以其他方式转换需要我们克隆数据。
首先,让我们尝试创建一个接收两个 String 并返回一个组合后的 String 的函数
fn combine(string1: String, string2: String) -> String {
let mut string = string1;
string.push_str(&string2);
return string;
}
push_str() 函数是什么?我们必须记住我们想要使用的每个函数吗?不,这就是文档的作用。文档提供了一种查找结构、函数(包括类型)以及它们的功能和使用方法的书面解释的方式。push_str 函数的文档可以在此处找到:https://doc.rust-lang.net.cn/std/string/struct.String.html#method.push_str。如果我们阅读它,我们会看到:
pub fn push_str(&mut self, string: &str)
Appends a given string slice onto the end of this String.
pub 表示它是公共的,所以我们可以使用它。&mut self 是 'self: &mut String' 的简写,因此它使用 self 作为对 String 的可变引用,并且它接收类型为 &str 的字符串。由于它是一个引用,我们可以使用 &string2 作为 &str,因为它可以轻松地取消引用为一个。