![](/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.