在 Rust 中,当向量 v 的大小为 1 时,为什么 &v[1..] 不会恐慌?

In Rust, why doesn't &v[1..] panic when the size of vector v is one?

gcd example in Programming Rust, 2nd Edition中,为什么&numbers[1..]不会导致语句越界错误

for m in &numbers[1..]

当向量 numbers 的大小为一时? numbers[1] 不处理第二个元素,它是向量末尾之后的一个元素吗?

例如,我预计 gcd 45 会出现恐慌,但它却报告了最大公约数 45:

ubuntu@development1:~/Documents/projects/rust/programming_in_rust/examples/gcd$ cargo run 45
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/gcd 45`
The greatest common divisor of [45] is 45

因为医生是这么说的:

Panics if begin does not point to the starting byte offset of a character (as defined by is_char_boundary), or if begin > len. source

因为在你的情况下 len 是 1 1.. 不会恐慌并且 return 是一个空切片。在您的情况下相当于 1..1