如何解决如何将 &[u8] 转换为 impl Iterator<Item = u8>?
我想将 &[u8]
传递给采用 u8
迭代器的函数:
fn f(words: &[u8]) {
g(words.iter())
}
fn g(words: impl Iterator<Item = u8>) {
//
}
error[E0271]: type mismatch resolving `<std::slice::Iter<'_,u8> as Iterator>::Item == u8`
--> src/lib.rs:3:5
|
3 | g(words.iter())
| ^ expected `u8`,found reference
...
6 | fn g(words: impl Iterator<Item = u8>) {
| --------- required by this bound in `g`
|
= note: expected type `u8`
found reference `&u8`
这是因为迭代器被实现为传递一个引用,而不是值。有没有办法在不改变 g
的签名的情况下完成这项工作?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。