【发布时间】:2020-12-20 19:59:19
【问题描述】:
我正在阅读 The Rust 书,我遇到了这个例子:
fn main() {
let a = [1, 2, 3, 4, 5];
let index = 10;
let element = a[index];
println!("The value of element is: {}", element);
}
而且书中说运行cargo run后...“编译没有产生任何错误,但是程序导致运行时错误并没有成功退出。”我不明白这一点。我看到一个编译错误,即使我通过cargo build 或rustc src/main.rs 进行编译,我也看到了错误。
this example 中的它们是什么意思?为什么这不是编译错误,而是运行时错误?
【问题讨论】:
-
这看起来显然是错误的。我想知道编译器是否已更新为进行编译时边界检查,而书中的这一页从未更新过。
-
程序在运行
cargo build时编译成功。 -
@IbraheemAhmed 如果编译为库并且
main被推断为死代码,是的,编译器不会对死代码进行 const 分析。否则,构建会产生所描述的错误。 -
@kmdreko 哦,完全错过了。这应该是be reported
标签: rust