Rust中如何以最短方式将单字节与4字节拼接为5字节数组?
Rust中拼接单个u8与u32大端字节数组的简洁实现
要实现单个u8字节与u32转大端后的4字节数组拼接成固定长度5的u8数组,最简洁的方式是利用Rust 1.55+引入的数组展开语法,直接在数组字面量中展开目标数组:
let byte: u8 = 1; let foo: u32 = 5; let out: [u8; 5] = [byte, ..foo.to_be_bytes()];
其他可选实现方式
- 兼容低版本Rust的手动构造方案:先缓存
u32的大端字节数组,再逐个元素填充目标数组
let byte: u8 = 1; let foo: u32 = 5; let foo_be = foo.to_be_bytes(); let out: [u8; 5] = [byte, foo_be[0], foo_be[1], foo_be[2], foo_be[3]];
- 迭代器拼接方案:通过迭代器链合并元素后转换为数组,会产生临时
Vec,存在轻微运行时开销
let byte: u8 = 1; let foo: u32 = 5; let out: [u8; 5] = std::iter::once(byte) .chain(foo.to_be_bytes()) .collect::<Vec<_>>() .try_into() .unwrap();
内容的提问来源于stack exchange,提问作者eof
相关产品推荐
相关产品推荐

