mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2024-11-09 00:43:59 +08:00
update ch04-03 close #821
This commit is contained in:
parent
f9c03661ba
commit
23029e0bd8
@ -78,15 +78,15 @@ fn second_word(s: &String) -> (usize, usize) {
|
||||
|
||||
不同于整个 `String` 的引用,`hello` 是一个部分 `String` 的引用,由一个额外的 `[0..5]` 部分指定。可以使用一个由中括号中的 `[starting_index..ending_index]` 指定的 range 创建一个 slice,其中 `starting_index` 是 slice 的第一个位置,`ending_index` 则是 slice 最后一个位置的后一个值。在其内部,slice 的数据结构存储了 slice 的开始位置和长度,长度对应于 `ending_index` 减去 `starting_index` 的值。所以对于 `let world = &s[6..11];` 的情况,`world` 将是一个包含指向 `s` 索引 6 的指针和长度值 5 的 slice。
|
||||
|
||||
图 4-6 展示了一个图例。
|
||||
图 4-7 展示了一个图例。
|
||||
|
||||
<img alt="Three tables: a table representing the stack data of s, which points
|
||||
to the byte at index 0 in a table of the string data "hello world" on
|
||||
the heap. The third table rep-resents the stack data of the slice world, which
|
||||
has a length value of 5 and points to byte 6 of the heap data table."
|
||||
src="img/trpl04-06.svg" class="center" style="width: 50%;" />
|
||||
src="img/trpl04-07.svg" class="center" style="width: 50%;" />
|
||||
|
||||
<span class="caption">图 4-6:引用了部分 `String` 的字符串 slice</span>
|
||||
<span class="caption">图 4-7:引用了部分 `String` 的字符串 slice</span>
|
||||
|
||||
对于 Rust 的 `..` range 语法,如果想要从索引 0 开始,可以不写两个点号之前的值。换句话说,如下两个语句是相同的:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user