gpt4 book ai didi

c - 在 Rust 中使用类似 C 的结构数组

转载 作者:行者123 更新时间:2023-11-29 07:59:01 25 4
gpt4 key购买 nike

我需要帮助将以下 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)

围栏:http://is.gd/tPRVq4

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com