我还不太熟悉Rust,如果问题有点基础请见谅,但我找不到任何好的资源。我正在编写一些IPC代码,以下是我的片段:
// Header format | "magic string" | msg len | msg type id |
let mut header: [u8; 14] = [105, 51, 45, 105, 112, 99, 0, 0, 0, 0, 0, 0, 0, 0];
我希望将
header [10..14]
设置为一个32位消息类型的本机字节顺序编码。同时,我还想将header[6..10]
设置为消息长度(再次使用本机字节顺序的32位整数)。到目前为止,我尝试过:
使用切片:(找不到编译的形式)
header[10 .. 14] = msg_type.to_ne_bytes();
一些奇怪的数组设计(无法找到编译通过的形式)
[header[10], header[11], header[12], header[13]] = msg_type.to_ne_bytes();
保存结果并覆盖写入。虽然可行,但似乎不够优雅。如果这是正确的答案,我理解,只是感觉不对。
let res = msg_type.to_ne_bytes();
header[10] = res[0];
header[11] = res[1];
header[12] = res[2];
header[13] = res[3];
如果有办法在创建数组时实现这一点,我很乐意尝试。提前感谢!
附言:如果有人好奇的话,这是 swaywm ipc 消息的客户端。