在 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
。
在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
。