Skip to content

Commit 445ed84

Browse files
author
Librazy
committed
修正对于String实现的描述并添加from_utf8示例
1 parent 25d88b9 commit 445ed84

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

type/string.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
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(sparkle_heart).unwrap();
75+
76+
assert_eq!("", meow);
77+
```
78+
6879
## 索引访问
6980

7081
有人会把Rust中的字符串和其惯用的字符串等同起来,于是就出现了如下代码

0 commit comments

Comments
 (0)