【问题标题】:Is there a generic way of accessing a container of mutable elements?是否有访问可变元素容器的通用方法?
【发布时间】:2015-01-05 03:20:05
【问题描述】:

我想改变容器中的元素。我唯一关心的是容器的长度以及容器的元素是有序的(即有第一个元素、第二个元素等)。但我正在努力做到这一点。

我的第一次尝试是使用可变引用的Iterator

fn mutate<'a, A, I>(items: I) where I: Iterator<&'a mut A>

问题是我需要对元素进行多次迭代。但是为了避免混淆可变引用,像SliceIterMut 这样的结构不会实现CloneRandomAccessIterator。据我所知,我不能使用同一个迭代器多次迭代可变引用。

然后我查看了IndexMut 特征。这似乎是我想要的,但我找不到另一个指定容器长度的特征。而实现IndexMutSlice 结构对每次访问进行边界检查,这是不可取的。

那么有没有办法做我想做的事?使用Iterators 会很好,因为我真正想做的是多次迭代可变元素。

【问题讨论】:

  • 你需要它有多通用?您有需要支持的类型示例吗?
  • 我希望支持尽可能多的类型,但我主要希望支持切片和循环缓冲区 (RingBuf)。

标签: rust


【解决方案1】:

你可以要求更多的界限:

fn mutate<'a, A, I>(items: I) 
where I: Iterator<Item=&'a mut A>,
      I: ExactSizeIterator,
      I: RandomAccessIterator,
      I: Clone {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多