gpt4 book ai didi

rust - 如何在 Rust 中实现 C 灵活数组成员模式?

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

我想实现这个使用 flexible array member 的 C 代码(有时称为 the struct hack )在 Rust 中:

struct test {
int key;
int dataSize;
int data[];
};
struct test* t = malloc(sizeof(struct test) + sizeOfData)

结构末尾的空数组允许您一次分配元字段和数据。不幸的是,我不知道如何在 Rust 中做这样的事情。

最佳答案

这个结构的 Rust 等价物将使用一个切片:

struct test {
key: i32,
dataSize: i32,
data: [i32],
}

但是,这些类型目前使用起来并不方便,因为没有安全的方法来构造它们。

一个更实用的方法是使用泛型:

struct test<T: ?Sized> {
key: i32,
dataSize: i32,
data: T,
}

然后确保仅在 T 是数组或切片(只能通过强制创建)时使用 test

另见:

关于rust - 如何在 Rust 中实现 C 灵活数组成员模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005645/

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