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

标签 c arrays struct rust

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

相关文章:

C 如何使用 esc 退出 while 循环

c++ - 常量指针 C++ 和优化,它们更快吗?

arrays - 你如何在 Ruby 中的循环迭代中刷新数组?

Python Ctypes 传入指针并返回结构

c - 在另一个结构中访问 x 个相同的结构

generics - 一种处理嵌入一个通用结构的所有结构类型的方法(json 编码)

c - 如何通过 makefile 显式链接库路径

c - 将函数传递给结构数组内的指针

c - 无法调用外部函数

c++ - 在 C++ 中循环遍历数组的推荐方法是什么?