小编Rec*_*ion的帖子

非复制或克隆的全局常量如何在 Rust 中工作?

假设我有以下片段(操场

struct A {
    pub val: u32
}

const GLOBAL_A: A = A {val: 2};

fn main() {
    let some_a: A = GLOBAL_A;
    let other_a: A = GLOBAL_A;

    println!("double val = {}", some_a.val + other_a.val);
}
Run Code Online (Sandbox Code Playgroud)

由于A既不是 也不CloneCopy,我认为 的值GLOBAL_A会被移动。这对于 const 没有多大意义,并且如图所示无论如何都不会是这种情况,因为它可以“移动”两次。

什么是允许的规则上面的代码工作考虑A是不是Clone也没有Copy

constants move rust

20
推荐指数
1
解决办法
595
查看次数

C 中的函数前缀与“函数结构”

我正在尝试找出 C(11) 中的最佳实践。因为没有命名空间,我可以想到两种避免名称冲突的方法:

a.) 函数前缀

void kernel_init(void) { ... }
int kernel_start(void* foo) { ... }
Run Code Online (Sandbox Code Playgroud)

b.) “函数结构”

struct kernel {
    void (*init)(void);
    int (*start)(void* foo);
} kernel;
Run Code Online (Sandbox Code Playgroud)

我不是在问哪种方法更漂亮,因为那是相当主观的。我要问的是,除了代码风格之外,这两种方法有什么明显的缺点吗?这包括一开始不相关但随着代码库增长而成为更大问题的小事情。

c struct function prefix

8
推荐指数
1
解决办法
1270
查看次数

标签 统计

c ×1

constants ×1

function ×1

move ×1

prefix ×1

rust ×1

struct ×1