如何在Rust中的结构中声明“静态”字段?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Rust中的结构中声明“静态”字段?相关的知识,希望对你有一定的参考价值。
如何在Rust中的结构中声明“静态”字段,最好使用默认值:
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 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 {
//...
}
}
另一答案
您可以在impl中声明关联的常量:
struct MyStruct {
x: i32,
y: i32,
}
impl MyStruct {
const MY_STATIC: i32 = 123;
}
fn main() {
println!("MyStruct::MY_STATIC = {}", MyStruct::MY_STATIC);
}
另一答案
您不能在结构中声明字段static。
您可以在模块范围内声明一个静态变量,如下所示:
static FOO: int = 42;
如果没有不安全的代码,你就不能拥有一个静态变量:要遵循借用规则,它必须包装在一个容器中,使得运行时借用检查和Sync
,如Mutex
或RWLock
,但这些不能存储在静态变量中,因为它们有非平凡的构造函数。
以上是关于如何在Rust中的结构中声明“静态”字段?的主要内容,如果未能解决你的问题,请参考以下文章