Arrays 为什么在固定大小数组上调用最后一个方法,而此类型不';你不能实现这个功能吗?

Arrays 为什么在固定大小数组上调用最后一个方法,而此类型不';你不能实现这个功能吗?,arrays,rust,Arrays,Rust,我有一个固定大小的数组,我想得到最后一个元素: let array = [1, 2, 3]; 根据固定大小数组的定义,没有为该类型直接实现的last方法 在快速研究之后,我注意到实现了last方法。我现在要做的就是找到一种将数组转换为切片的方法。我可以使用iter方法: let last = array.iter().last(); 但我也注意到,我可以省略对iter的调用,得到完全相同的行为: let last = array.last(); 为什么这是可能的?固定大小的数组类型如何调用

我有一个固定大小的数组,我想得到最后一个元素:

let array = [1, 2, 3];
根据固定大小数组的定义,没有为该类型直接实现的
last
方法

在快速研究之后,我注意到实现了
last
方法。我现在要做的就是找到一种将数组转换为切片的方法。我可以使用
iter
方法:

let last = array.iter().last();
但我也注意到,我可以省略对
iter
的调用,得到完全相同的行为:

let last = array.last();
为什么这是可能的?固定大小的数组类型如何调用它没有实现的方法?我查看了为该类型实现的所有特性,其中没有一个具有
last
方法


在我写这个问题时,我还注意到没有为固定大小的数组类型定义
iter
函数。文件是部分的吗?还是我不善于阅读?

这是
数组类型的一个特例,它自动强制执行相同类型的
切片。关于这一点,请(仅)说一句话:

数组强制为,因此可以对 数组


在这两种情况下,数组都被强制为一个
切片
,因此您最终在隐式
切片
上调用
.iter()
.last()
,而不是在
数组

上,您缺少的概念是解除强制,它允许实现
Deref
DerefMut
的类型的引用强制到
&Deref::Target
类型中。上述错误,数组不进行Deref。