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 中类型之间的转换由定义函数 from
的 From
特征定义,因此 Foo::from (bar)
将值 bar
转换为类型 Foo
。因此,在您的情况下,您将 24u32
转换为类型 BigUint
,但这是什么 24u32
?
Rust 中的整数文字可以使用后缀来指定它们的实际类型。如果您只写 24
,它可能是 i32
、u8
或 u32
。大多数时候,编译器能够从值的使用方式推断出实际类型,如果不能,则默认为 i32
。但在你的情况下,这是行不通的:没有 BigUint::from<i32>
但所有常规无符号类型都有转换函数:u8
、u16
、u32
、u64
和 u128
,所以编译器不知道使用哪一个。添加 u32
后缀可以明确类型,因此 24u32
是具有类型 u32
的值 24
,让编译器理解您想要 BigUint::from<u32> (24)
。
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 中类型之间的转换由定义函数 from
的 From
特征定义,因此 Foo::from (bar)
将值 bar
转换为类型 Foo
。因此,在您的情况下,您将 24u32
转换为类型 BigUint
,但这是什么 24u32
?
Rust 中的整数文字可以使用后缀来指定它们的实际类型。如果您只写 24
,它可能是 i32
、u8
或 u32
。大多数时候,编译器能够从值的使用方式推断出实际类型,如果不能,则默认为 i32
。但在你的情况下,这是行不通的:没有 BigUint::from<i32>
但所有常规无符号类型都有转换函数:u8
、u16
、u32
、u64
和 u128
,所以编译器不知道使用哪一个。添加 u32
后缀可以明确类型,因此 24u32
是具有类型 u32
的值 24
,让编译器理解您想要 BigUint::from<u32> (24)
。