On Tue, 2025-12-02 at 16:35 -0800, John Hubbard wrote:
> for chunk in data.chunks_exact(4) {
> // PANIC: `chunks_exact(4)` guarantees each chunk is exactly 4
> bytes.
> let word = u32::from_le_bytes(chunk.try_into().unwrap());
> regs::NV_PFALCON_FALCON_EMEM_DATA::default()
> .set_data(word)
> .write(bar, &Fsp::ID);
> }
>
> ...but actually, I think your way is better, because you don't have
> just justify an .unwrap().
>
> What do you think?
I agree. Avoiding unwrap(), even with a comment, is always a good idea.
> I figured you'd enjoy this, coming as it does just one email after I
> wrote "never .unwrap()". haha :)
I think your code is effectively identical to mine, except that I don't need
the PANIC comment. I
suspect that in both cases, the compiler cannot tell that each chunk is always
4 bytes and
try_into() will never panic. In my case, word[3] always exists and will never
panic either. So I'm
guess that the compiler will still emit code to check for panic. I don't know.