2017-10-23 3 views
0

time::Durationのような構造体のグローバル定数を指定することはできますか?`time :: Duration`のようにstructのグローバル定数を指定することはできますか?

const DELAY_TIME: time::Duration = ??? 
... 
thread::sleep(DELAY_TIME); 
+0

私は 'Duration'構造体のフィールドはプライベートであるため、あなたはそのコンストラクタを使用しないことができると思うので、'の一部として使用することはできませんconst式。 – turbulencetoo

+0

'Duration :: new'を使用しようとすると、このエラーが発生します:' error [E0015]:定数の呼び出しはstructとenumのコンストラクタに限定されています ' – turbulencetoo

答えて

0

Durationは、コンパイル時に計算することができますので、あなたは2つのオプションがあります。

  • ストア(彼らはただu64u32ているので、簡単に)

    • ストアコンストラクタのパラメータをlazy_staticDuration(動的割り当て、アトミックロック、および従属クレートが必要です。ここでは推奨しません)。

    は、ここで最初のオプションを行う方法は次のとおりです。

    use std::time::Duration; 
    use std::thread::sleep; 
    
    const DELAY_SECONDS: u64 = 1; 
    const DELAY_NANO_SECONDS: u32 = 0; 
    
    fn main() { 
        sleep(Duration::new(DELAY_SECONDS, DELAY_NANO_SECONDS)); 
    } 
    
  • 関連する問題