Rust 匿名静态数组

标签 rust

我正在尝试使用以下布局初始化结构:

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/

相关文章:

vector - 如何使用 wasm-bindgen 将 Vec 作为类型化数组返回?

rust - 对元组的可变引用作为输入参数

testing - Rust:如何模拟 request::Result?

rust - 不能对数组的大小使用惰性静态整数常量

rust - 为具有生命周期的通用函数起别名?

compiler-errors - rustc 能否提供有关类型歧义错误的更多详细信息?

rust - 我可以在不包装浮点类型和滥用 BTreeMap 的情况下使用标准库执行二叉树搜索吗?

file - 使用 BufReader 逐行读取文件,存储到数组中

rust - 在no_std环境中,我该如何替换Vec和HashSet?

enums - 当枚举变体已知时解包内部类型