![](/img/trans.png)
[英]How can I make a range of values using BigInt or BigUint in Rust?
[英]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.