diff --git a/course-book/contents/basic/compound-type/string-slice.md b/course-book/contents/basic/compound-type/string-slice.md index c2c4d79a..ac03833e 100644 --- a/course-book/contents/basic/compound-type/string-slice.md +++ b/course-book/contents/basic/compound-type/string-slice.md @@ -302,7 +302,7 @@ note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 因此在通过索引区间来访问字符串时,需要格外的小心,一不注意,就会导致你程序的崩溃! ## 操作UTF8字符串 -前文提到了几中使用UTF8字符串的方式,下面来一一说明。 +前文提到了几种使用UTF8字符串的方式,下面来一一说明。 #### 字符 如果你想要以Unicode字符的方式遍历字符串,最好的办法是使用`chars`方法,例如: @@ -342,7 +342,7 @@ for b in "中国人".bytes() { 想要准确的从UTF8字符串中获取子串是较为复杂的事情,例如想要从`holla中国人नमस्ते`这种变长的字符串中取出某一个子串,使用标准库你是做不到的, 你需要在`crates.io`上搜索`utf8`来寻找想要的功能。 -可以考虑尝试下这个库:[utf8 slice](https://crates.io/crates/utf8_slice). +可以考虑尝试下这个库:[utf8_slice](https://crates.io/crates/utf8_slice). @@ -358,7 +358,7 @@ for b in "中国人".bytes() { 其中第一个由`String::from`完成,它创建了一个全新的String. -重点来了,到了第二部分,就是百家齐放的环节,在有**垃圾回收GC**的语言中,GC来负责标记并清除这些不再使用的内存对象,这些都是自动完成,无需开发者关心,非常简单好用;在无GC的语言,是开发者手动去释放这些内存对象,就像创建对象一样,需要通过编写代码来完成,因为未能正确释放对象造成的经济简直不可估量. +重点来了,到了第二部分,就是百家齐放的环节,在有**垃圾回收GC**的语言中,GC来负责标记并清除这些不再使用的内存对象,这些都是自动完成,无需开发者关心,非常简单好用;在无GC的语言,是开发者手动去释放这些内存对象,就像创建对象一样,需要通过编写代码来完成,因为未能正确释放对象造成的结局简直不可估量. 对于Rust而言,安全和性能是写到骨子里的核心特性,使用GC牺牲了性能,使用手动管理内存牺牲了安全,那该怎么办?为此,Rust的开发者想出了一个无比惊艳的办法:变量在离开作用域后,就自动释放其占用的内存: