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。