使用 AtomicUsize::new 时,const fns 是一个不稳定的特性

const fns are an unstable feature when using AtomicUsize::new

这段代码有什么问题?

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 显然是稳定的。

这样做的目的是获得一个原子的每进程计数器。

是的,从 Rust 1.10 开始,您不能在函数外部调用函数。这需要一个还不稳定的特性:常量函数求值。

您可以使用 ATOMIC_USIZE_INIT(或适当的变体)将原子变量初始化为零:

use std::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT};

static COUNTER: AtomicUsize = ATOMIC_USIZE_INIT;

fn main() {}

作为,没有必要使它可变。正如编译器指出的那样,staticconst 值应该在 SCREAMING_SNAKE_CASE.