Rust 我如何更改a&;amp;mut可窥视<;I>;进入a&;[u8]?

Rust 我如何更改a&;amp;mut可窥视<;I>;进入a&;[u8]?,rust,Rust,我有一个类型为&mut-peakable的值,我想用它作为其他函数的输入值,该函数获取类型为和[u8]的值。如何更改它的类型?Peekable是一个迭代器,它提供了迭代器中的元素并将其包装起来(有一个转折点,您可以在前面查看一个,但这与此处无关) &[u8]是内存中连续排列的字节片 所以你有两个问题: 迭代器I可以是任何东西。假设您从通用上下文(如foo())获得I,则需要确保迭代器提供u8,或可转换为u8的内容 peakable后面的数据不必存在于内存中。它可以从一个范围创建,例如(0..10

我有一个类型为
&mut-peakable
的值,我想用它作为其他函数的输入值,该函数获取类型为
和[u8]
的值。如何更改它的类型?

Peekable
是一个迭代器,它提供了迭代器中的元素并将其包装起来(有一个转折点,您可以在前面查看一个,但这与此处无关)

&[u8]
是内存中连续排列的字节片

所以你有两个问题:

  • 迭代器
    I
    可以是任何东西。假设您从通用上下文(如
    foo()
    )获得
    I
    ,则需要确保迭代器提供
    u8
    ,或可转换为
    u8
    的内容

  • peakable
    后面的数据不必存在于内存中。它可以从一个范围创建,例如
    (0..1000)
    ,或者在一个
    散乱数据的HashMap
    上迭代。您需要将其复制到保证连续布局的向量

  • 首先,您需要声明希望使用
    u8
    其中I:Iterator
    ,或者要求使用
    其中I:Iterator
    将类型转换为
    u8
    。然后您将能够执行
    let iterator=iterator.map(|el | el.into())
    以获得
    u8
    元素的迭代器

    一旦你有了它,你可以把它们收集到一个向量中,然后得到向量的一个切片:

    让vec:vec=iterator.collect();
    let slice=&vec[…];