gpt4 book ai didi

rust - 如何将 &mut Peekable 更改为 &[u8]?

转载 作者:行者123 更新时间:2023-11-29 08:17:27 24 4
gpt4 key购买 nike

我有一个类型为 &mut Peekable<I> 的值我想将它用作其他函数的输入值,该函数获取类型为 &[u8] 的值.我怎样才能改变它的类型?

最佳答案

Peekable<I>是一个迭代器,它从它包装的迭代器中给出元素(有一个扭曲,你可以提前看到一个,但这与这里无关)。

&[u8]是在内存中连续放置的 byte slice 。

所以你有两个问题:

  1. 迭代器 I可以是任何东西。假设你有 I来自通用上下文,例如 foo<I: Iterator>() ,您需要确保迭代器给出 u8 , 或可转换为 u8 的东西.

  2. Peekable背后的数据不必存在于内存中。它可以从一个范围创建,例如 (0..1000)或遍历 HashMap它具有以随机方式散布的数据。您需要将其复制到保证连续布局的向量中。

首先,您需要声明您想要 u8where I: Iterator<Item=u8> ,或者要求该类型可转换为 u8where I: Iterator<Item=impl Into<u8>> .然后你就可以做 let iterator = iterator.map(|el| el.into())得到 u8 的迭代器元素。

一旦你有了它,你就可以将它们收集到一个向量中,并获得向量的一部分:

let vec: Vec<u8> = iterator.collect();
let slice = &vec[..];

关于rust - 如何将 &mut Peekable<I> 更改为 &[u8]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com