File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 55刚刚学习Rust的同学可能会被Rust的字符串搞混掉,比如` str ` ,` String ` , ` OsStr ` , ` CStr ` ,` CString ` 等等……
66事实上,如果你不做FFI的话,常用的字符串类型就只有前两种。我们就来着重研究一下Rust的前两种字符串。
77
8- 你要明白的是,Rust中的字符串实际上是被编码成UTF-8的一个Unicode字符数组 。这么说比较拗口,简单来说,Rust字符串内部存储的是一个UTF-8数组,但是这个数组是Unicode字符经过编码得来的 。因此,可以看成Rust原生就支持Unicode字符集(Python2的码农泪流满面)。
8+ 你要明白的是,Rust中的字符串实际上是被编码成UTF-8的一个字节数组 。这么说比较拗口,简单来说,Rust字符串内部存储的是一个u8数组,但是这个数组是Unicode字符经过UTF-8编码得来的 。因此,可以看成Rust原生就支持Unicode字符集(Python2的码农泪流满面)。
99
1010## str
1111
@@ -65,6 +65,17 @@ fn main() {
6565
6666需要知道的是,将` String ` 转换成` &str ` 是非常轻松的几乎没有任何开销的。但是反过来,将` &str ` 转换成` String ` 是需要在堆上请求内存的,因此,要慎重。
6767
68+ 我们还可以将一个UTF-8编码的字节数组转换成String,如
69+ ``` rust
70+ // 存储在Vec里的一些字节
71+ let miao = vec! [229 ,150 ,181 ];
72+
73+ // 我们知道这些字节是合法的UTF-8编码字符串,所以直接unwarp()
74+ let meow = String :: from_utf8 (miao ). unwrap ();
75+
76+ assert_eq! (" 喵" , meow );
77+ ```
78+
6879## 索引访问
6980
7081有人会把Rust中的字符串和其惯用的字符串等同起来,于是就出现了如下代码
You can’t perform that action at this time.
0 commit comments