簡體   English   中英

如何在 Rust 中定義 BigUint 常量

[英]How to define BigUint const in Rust

我正在嘗試為加密大(最多 8000 位)素數定義算術。 我為此使用num_bigint::BigUint 如何將我正在使用的質數定義為pub const

我嘗試先將數字 2 定義為 const

pub const PRIME: BigUint =  BigUint{ data: [2].to_vec() };

但是to_vec是一個非常量 fn,同樣適用於我可以用來定義 BigUint 的任何其他方法,例如BigUInt::new所以它會給我一個錯誤

error[E0015]: cannot call non-const fn `slice::<impl [u64]>::to_vec` in constants
  --> src/main.rs:44:46
   |
44 | pub const PRIME: BigUint =  BigUint{ data: [2].to_vec() };
   |                                              ^^^^^^^^
   |
   = note: calls in constants are limited to constant functions, tuple structs and tuple variants

不,這是不可能的。 創建一個向量需要分配,你不能在const上下文中進行分配。

但是,您應該使用lazy_static板條箱大致實現您想要的:

lazy_static! {
    static ref PRIME:BigUint = BigUint::new(vec![2]);
}

這實際上會在運行時創建數據,但它仍然表現得像一個不可變的靜態。

游樂場中的示例代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM