BigUint::from(24u32) 是做什么的?

What does BigUint::from(24u32) do?

BigUint::from(24u32)

我知道它与一个大的无符号整数有关,因为它是分解大数的密码学模块的一部分。我不明白 from(24u32) 部分的作用。 例如,如果在此上下文中使用它

let b: BigUint = (BigUint::from(24u32) * &n).sqrt() + &one;

BigUint 结构实现了 From<u32> trait,这意味着它将实现一个 from(u32) 函数。

From<_> trait 的实现用于执行将消耗原始输入的值转换。在您的示例中, BigUint 结构是根据 24u32 数字构造的。

Rust 中类型之间的转换由定义函数 fromFrom 特征定义,因此 Foo::from (bar) 将值 bar 转换为类型 Foo。因此,在您的情况下,您将 24u32 转换为类型 BigUint,但这是什么 24u32

Rust 中的整数文字可以使用后缀来指定它们的实际类型。如果您只写 24,它可能是 i32u8u32。大多数时候,编译器能够从值的使用方式推断出实际类型,如果不能,则默认为 i32。但在你的情况下,这是行不通的:没有 BigUint::from<i32> 但所有常规无符号类型都有转换函数:u8u16u32u64u128,所以编译器不知道使用哪一个。添加 u32 后缀可以明确类型,因此 24u32 是具有类型 u32 的值 24,让编译器理解您想要 BigUint::from<u32> (24)