相关疑难解决方法(0)

为什么在编译时没有检测到这个越界错误?

我刚刚开始用 Rust 编码几天,在这里偶然发现了这个我不明白的案例

struct Foo {
    arr: [u8; 5]
}

fn main() {
    let foo = Foo{ arr: [0; 5] };
    let bar = &foo;
    println!("{}", bar.arr[100]);
}
Run Code Online (Sandbox Code Playgroud)

为什么这段代码可以编译?编译器看不到那里有越界错误吗?当我尝试打印时它可以检测到它foo.arr[100],那么是什么给出了呢?

rust

6
推荐指数
1
解决办法
218
查看次数

标签 统计

rust ×1