小编avs*_*hyz的帖子

如何迭代 itertools::chunks

我是一个新的 rustacean,所以我的代码质量值得怀疑。在尝试获取生锈的绳索时,我遇到了以下问题。

我有一个位向量 ( bools ),我想将其转换为字节向量 ( u8)

我的第一个实现看起来像这样

let mut res: Vec<u8> = vec![];
let mut curr = 0;
for (idx, &bit) in bits.iter().enumerate() {
    let x = (idx % 8) as u8;
    if idx % 8 != 0 || idx == 0 {
        curr = set_bit_at(curr, (7 - (idx % 8)) as u32, bit).unwrap();
    } else {
        res.push(curr);
        curr = 0
    }
}
res.push(curr);
Run Code Online (Sandbox Code Playgroud)

它有效,但感觉很丑陋,所以我尝试使用板条箱 itertools 来实现它。

let res = bits.iter()
    .chunks(8)
    .map(|split_byte: Vec<u8>| {
        split_byte.fold(0, …
Run Code Online (Sandbox Code Playgroud)

rust

6
推荐指数
1
解决办法
3204
查看次数

迭代器的下一个返回 Some(&amp;1)。为什么?

这可能是一个愚蠢的问题,但它解决了我。

我已经开始从万能的书中学习 Rust 。在迭代器章节(其中链接的章节)中有以下示例

fn iterator_demonstration() {
    let v1 = vec![1, 2, 3];

    let mut v1_iter = v1.iter();

    assert_eq!(v1_iter.next(), Some(&1));
    assert_eq!(v1_iter.next(), Some(&2));
    assert_eq!(v1_iter.next(), Some(&3));
    assert_eq!(v1_iter.next(), None);
}
Run Code Online (Sandbox Code Playgroud)

这本书有点上釉,但我想知道 - 为什么需要&符号?

编辑:只是为了澄清 - 我确实理解iter通过不可变引用进行迭代。我只是不太明白引用数字文字(再次,菜鸟问题。)

rust

5
推荐指数
1
解决办法
75
查看次数

标签 统计

rust ×2