是否有一个指数`len`方法的子索引?

时间:2016-11-10 16:44:44

标签: rust traits

std::ops::Index特征由支持数组下标表示法的类型实现。看来大多数实现Index的类型也有len方法,但它不是特征的一部分,所以你不能认为它存在。因此,我发现自己编写专门用于切片的代码(它有一个len方法),但我更喜欢更一般。

是否存在Index的子引用指定len方法或以其他方式显示允许的索引范围?

1 个答案:

答案 0 :(得分:1)

  

是否存在Index的子引用指定len方法或以其他方式显示允许的索引范围?

据我所知,不是在标准库中。

但我会注意到,你似乎误解了:

  1. Index必须返回连续范围的键的结果
  2. Index此连续范围从0
  3. 开始

    这两个假设都是len在这里有用的必要条件(因为我认为你有兴趣在调用[]之前检查,其中密钥存在)。< / p>

    因此,从本质上讲,您要求的是特征层次结构:

    • Index,允许按键查询元素
    • RangeIndex,允许按键查询元素,并保证有效键形成连续范围; RangeIndex可以使用range方法返回Range个有效密钥
    • ZeroBasedRangeIndex,允许通过数字键查询元素,并保证有效格式从0开始是连续的范围; ZeroBasedRangeIndex可以使用len方法返回有效密钥的数量

    当然,IndexMut必须重复这些。

    注意:例如,可以为BTreeMap<K, V>实施Index<K, Output=V> ...