小编Ken*_*ima的帖子

为什么对数组的嵌套引用不会强制切片?

我读过什么是Rust的确切自动解除引用规则?从头到尾,但我仍然有一个关于从数组到切片的强制的问题.

让我们考虑以下代码:

let arr: &[i32; 5] = &&&[1, 2, 3, 4, 5];
// let arr: &[i32] = &&&[1, 2, 3, 4, 5]; // Error; expected slice, found reference
Run Code Online (Sandbox Code Playgroud)

我希望它&&&[1, 2, 3, 4, 5]有类型,&&&[i32; 5]并且引用 &&[i32; 5]=> &[i32; 5]=> &[i32; 5]=> &[i32],但结果与我的预期不同.

我试着运行以下代码:

let arr: &&&[i32; 5] = &&&[1, 2, 3, 4, 5];
let n = arr.first().unwrap(); // 1
Run Code Online (Sandbox Code Playgroud)

这是正确的代码.arr强制类型为&&&[i32; 5]=> &&[i32; 5]=> &[i32; 5]=> …

coercion dereference rust

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

标签 统计

coercion ×1

dereference ×1

rust ×1