如何在Rust中声明 struct 中的"静态"字段,最好使用默认值:

struct MyStruct {
    x: i32,               // instance
    y: i32,               // instance
    my_static: i32 = 123, // static, how?
}

fn main() {
    let a = get_value();
    if a == MyStruct::my_static {
        //...
    } else {
        //...
    }
}

推荐答案

rust 不支持 struct 中的静电场,所以你不能这么做.你能得到的最接近的东西是一个关联的方法:

struct MyStruct {
    x: i32,
    y: i32,
}

impl MyStruct {
    #[inline]
    pub fn my_static() -> i32 {
        123
    }
}

fn main() {
    let a = get_value();
    if a == MyStruct::my_static() {
        //...
    } else {
        //...    
    }
}

Rust相关问答推荐

PyReadonlyArray2到Vec T<>

如何容器化Linux上基于Rust的Windows应用程序的编译过程?

为什么我不能从带有字符串的 struct 的引用迭代器中收集VEC<;&;str&>?

如何正确重新排列代码以绕过铁 rust 借入判断器?

根据填充系数以相对大小在给定空间中布局项目

如何初始化选项<;T>;数组Rust 了?

为什么RefCell没有与常规引用相同的作用域?

Rust面向对象设计模式

为什么我需要 to_string 函数的参考?

在 Rust 中查找向量中 dyn struct 的索引

为什么 Rust 字符串没有短字符串优化 (SSO)?

一旦令牌作为文字使用,声明宏不匹配硬编码值?

使用 Rust 从 Raspberry Pi Pico 上的 SPI 读取值

从嵌入式 Rust 中的某个时刻开始经过的时间

错误:将自定义 proc_macro 与用Rust 的宝贝编写的属性一起使用时,无法在此范围内找到属性

预期的整数,找到 `&{integer}`

为什么 Rust 编译器在移动不可变值时执行复制?

隐式类型闭包的错误生命周期推断

为什么我可以在没有生命周期问题的情况下内联调用 iter 和 collect?

如何在 Rust 的泛型函​​数中同时使用非拥有迭代器和消费迭代器?