我需要帮助将以下 C 代码转换为 Rust。
#define v0 0x0
#define v1 0x1
#define v2 0x2
#define v3 0x3
struct arr {
u_int v;
const char *s;
};
static const struct arr str[] = {
{ v0, "zero" },
{ v1, "one" },
{ v2, "two" },
{ v3, "three" },
{ 0, NULL }
};
我已经完成了以下 Rust 代码,但我想不出像 C 代码那样创建结构数组的最佳方法。
static v0: u8 = 0;
static v1: u8 = 1;
static v2: u8 = 2;
static v3: u8 = 3;
struct arr {
v: u8,
s: &'static str,
}
我尝试了以下代码,但没有成功:
static str: [arr; 4] = [
{
v: v0,
s:"zero",
},
{
v: v1,
s:"one",
},
{
v: v2,
s:"two",
},
{
v: v3,
s:"three",
},
];
最佳答案
你的尝试几乎是正确的,除了你需要用名称写出结构构造函数(Rust 中没有快捷方式)
另请注意,除了 static
之外,Rust 还有 const
。 (Rust 中的 const
大致等同于 C 中的 const static
)
const v0: i8 = 0;
const v1: i8 = 1;
const v2: i8 = 2;
const v3: i8 = 3;
struct Arr {
v: i8,
s: &'static str,
}
const str: [Arr; 4] = [
Arr {
v: v0,
s:"zero",
},
Arr {
v: v1,
s:"one",
},
Arr {
v: v2,
s:"two",
},
Arr {
v: v3,
s:"three",
},
];
fn main() {
println!("{}", str[2].v);
}
关于c - 在 Rust 中使用类似 C 的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490756/