相关疑难解决方法(0)

如何在Rust中执行高效的向量初始化?

在Rust中填充结构向量的好方法是:

  • 大小是动态的,但在初始化时已知.
  • 不首先将内存初始化为虚拟值.
  • 不重新分配内存作为填充.
  • 在此示例中,始终初始化向量的所有成员.
    (符合Rusts保证没有未定义的行为).

理想情况下

  • 不索引检查每个索引访问
    (因为在声明向量时大小是已知的,这应该是可能的).
  • 不需要unsafe
    (不确定这是否合理,但编译器_could_检测到所有值始终被填充,允许在不安全的块中使用此类逻辑).

C等价物是:

struct MyStruct *create_mystruct(const uint n) {
    struct MyStruct *vector = malloc(sizeof(*vector) * n);
    for (uint i = 0; i < n; i++) {
        /* any kind of initialization */
        initialize_mystruct(&vector[i], i);
    }
    return vector;
}
Run Code Online (Sandbox Code Playgroud)

我正在移植一些C代码,它在一个简单的循环中填充一个数组,所以我想知道是否有一种乡村方式来执行这样一个零或至少最小开销的常见任务?

如果此代码的Rust版本通常需要一些额外的检查,那么最近的等价物是什么?

arrays performance unsafe rust

0
推荐指数
1
解决办法
1069
查看次数

标签 统计

arrays ×1

performance ×1

rust ×1

unsafe ×1