vector - 在 Rust 中,当向量 v 的大小为 1 时,为什么 &v[1..] 不恐慌?
问题描述
在Programming Rust, 2nd Edition的gcd 示例中,为什么不会导致语句中出现越界错误&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
解决方案
因为医生这样说:
如果 begin 不指向字符的起始字节偏移量(由 is_char_boundary 定义),或者如果 begin > len,则发生恐慌。来源
由于 len1
在您的情况下1..
不会惊慌并返回一个空切片。相当于1..1
你的情况。
推荐阅读
- reactjs - Graphql/Apollo/React 无法导入本地图片
- android - 是否可以为应用程序设置单个默认语言环境?
- google-analytics - 我设置了 Google Analytics 电子商务跟踪,但数据未填充到 GA
- python - 根据列表从文件夹导入图像 - python
- android - 我在哪里提交这个 ndk 错误?
- r - 在 r 中,pmap 函数对我来说是破坏性的
- python - Python Pandas:数据框中整个列的 NLTK 部分语音标记
- entity-framework - 实体框架 - 始终加密 - AzureKeyVault
- scala - 使用字符串引用在 scala 中获取静态最终字段
- python-3.x - 如何使用 for 循环打印如下语句