diff --git a/src/ch04-03-slices.md b/src/ch04-03-slices.md index 77b4cab..5fceabd 100644 --- a/src/ch04-03-slices.md +++ b/src/ch04-03-slices.md @@ -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 展示了一个图例。 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-07.svg" class="center" style="width: 50%;" /> -图 4-6:引用了部分 `String` 的字符串 slice +图 4-7:引用了部分 `String` 的字符串 slice 对于 Rust 的 `..` range 语法,如果想要从索引 0 开始,可以不写两个点号之前的值。换句话说,如下两个语句是相同的: