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

时间:2016-09-12 14:06:46

标签: compiler-errors rust atomic

此代码有什么问题?

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

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

1 个答案:

答案 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,没有必要让它变得可变。正如编译器指出的那样,staticconst值应该在SCREAMING_SNAKE_CASE中。