【发布时间】:2021-11-20 08:09:01
【问题描述】:
我想遍历一个整数的字节:
use core::mem::size_of;
const SIZE: usize = size_of::<u64>();
fn main() {
let x: u64 = 512;
let mut buf: [u8; SIZE] = [0; SIZE];
for (i, b) in x.to_be_bytes().into_iter().enumerate() {
buf[i] = b;
}
}
编译器告诉我buf[i] = b; 行,他expected `u8`, found `&u8` 。但为什么呢?
当我查看拥有数组类型[T; N] 的IntoIterator 特征的实现时,into_iter() 方法返回一个std::array::IntoIter<T, N>,它实现了Iterator 特征,其中type Item = T。 T 不应该在这里评估为u8 吗?
为什么迭代器返回 &u8 引用而不是拥有的 u8 字节?
【问题讨论】: