我正在尝试使用以下布局初始化结构:
struct BytePattern {
pattern: &'static [u8],
mask: &'static [u8]
};
我可以初始化这个内联吗,比如:
return BytePattern {
pattern: &'static [0x00u8, 0x00u8, 0x01u8, 0x00u8],
mask: &'static [0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8]
}
编辑:上面的语法返回`error: expected :, found '['
编辑:Reddit提供了以下 hack 来做到这一点(是的,我是个 SCSS ,在多个地方询问这种语言)
return BytePattern {
pattern: { static P: &'static [u8] = &[0x00u8, 0x00u8, 0x01u8, 0x00u8]; P },
mask: { static M: &'static [u8] = &[0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8]; M },
}
这……很糟糕,但是有效。如果我找不到不同的东西,我会使用它
最佳答案
您可以使用字节字符串文字来生成&'static [u8]
:
BytePattern {
pattern: b"\x00\x00\x01\x00",
mask: b"\xff\xff\xff\xff",
}
这当然不是任何静态切片的通用解决方案,但会处理 u8
的情况。
关于Rust 匿名静态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27173041/