gpt4 book ai didi

rust - 如何简化BigInt::from()的多种用法?

转载 作者:行者123 更新时间:2023-12-03 11:40:55 41 4
gpt4 key购买 nike

我编写了一个程序,在其中操纵了许多 BigInt BigUint值并执行了一些算术运算。

我在经常使用BigInt::from(Xu8)的地方生成了代码,因为不可能直接添加不同类型的数字(如果我理解正确的话)。

我想减少代码中BigInt::from的数量。我想到了一个“包装”此功能的函数,但我需要将每种类型的函数转换为BigInt/BigUint:

fn short_name(n: X) -> BigInt {
return BigInt::from(n)
}
X将是我要转换的每种类型。

我找不到任何与Rust的静态类型化哲学都不矛盾的解决方案。

我觉得我对特质缺少一些了解,但是我对特质并不十分满意,也没有找到使用特质的解决方案。

我是否要在Rust中做一些不可能的事情?我是否缺少明显的解决方案?

最佳答案

From<T> 特性(和互补的 Into<T> 特性)通常用于在Rust中进行类型之间的转换。实际上,BigInt::from方法来自From特性。

您可以使用short_name子句将where函数修改为通用函数,以接受可以将BigInt转换为的所有类型:

fn short_name<T>(n: T) -> BigInt // function with generic type T
where
BigInt: From<T>, // where BigInt implements the From<T> trait
{
BigInt::from(n)
}

关于rust - 如何简化BigInt::from()的多种用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59329496/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com