此代码有什么问题?
use std::sync::atomic::AtomicUsize;
static mut counter: AtomicUsize = AtomicUsize::new(0);
fn main() {}
我收到此错误:
error: const fns are an unstable feature
--> src/main.rs:3:35
|>
3 |> static mut counter: AtomicUsize = AtomicUsize::new(0);
|> ^^^^^^^^^^^^^^^^^^^
help: in Nightly builds, add `#![feature(const_fn)]` to the crate attributes to enable
文档提到其他原子int大小不稳定,但AtomicUsize
显然是稳定的。
这样做的目的是获得一个原子每进程计数器。
答案 0 :(得分:9)
是的,你不能在Rust 1.10之外调用函数之外的函数。这需要一个尚不稳定的功能:恒定功能评估。
您可以使用ATOMIC_USIZE_INIT
(或相应的变体)将原子变量初始化为零:
use std::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT};
static COUNTER: AtomicUsize = ATOMIC_USIZE_INIT;
fn main() {}
作为bluss points out,没有必要让它变得可变。正如编译器指出的那样,static
和const
值应该在SCREAMING_SNAKE_CASE
中。