2016-09-12 10 views
5

इस कोड के साथ क्या गलत है?कॉन्स एफएनएस परमाणु उपयोग का उपयोग करते समय एक अस्थिर विशेषता है :: नया

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 

डॉक्स में उल्लेख है कि अन्य परमाणु पूर्णांक आकार अस्थिर कर रहे हैं, लेकिन जाहिरा तौर पर AtomicUsize स्थिर है।

इसका उद्देश्य परमाणु प्रति-प्रक्रिया काउंटर प्राप्त करना है।

+3

परमाणु को 'स्थिर म्यूट 'में होने की आवश्यकता नहीं है, यह एक सादे' स्थिर' में होना चाहिए। परमाणु संचालन उन्हें संशोधित करते समय आंतरिक परिवर्तनशीलता का उपयोग करते हैं। आप देखते हैं कि उनके सभी उत्परिवर्तन विधियां 'और स्वयं' का उपयोग पहली तर्क (साझा संदर्भ) के रूप में करती हैं। – bluss

+1

आह हाँ यह समझ में आता है, क्योंकि उन्हें उधार चेकर पर भरोसा करने की आवश्यकता नहीं है। – Timmmm

उत्तर

9

हां, आप जंग के 1.7 के रूप में फ़ंक्शन के बाहर फ़ंक्शंस को कॉल नहीं कर सकते हैं। इसके लिए एक ऐसी सुविधा की आवश्यकता है जो अभी तक स्थिर नहीं है: निरंतर कार्य मूल्यांकन।

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

static COUNTER: AtomicUsize = ATOMIC_USIZE_INIT; 

fn main() {} 

bluss points out हैं, वहाँ इस परिवर्तनशील बनाने के लिए कोई ज़रूरत नहीं है:

आप ATOMIC_USIZE_INIT का उपयोग कर शून्य पर एक परमाणु चर (या उचित संस्करण) को प्रारंभ कर सकते हैं। और जैसा कि संकलक इंगित करता है, static और const मान SCREAMING_SNAKE_CASE में होना चाहिए।

संबंधित मुद्दे