gpt4 book ai didi

rust - 如何使用 num crate 在泛型代码中表达零和一以外的整数?

转载 作者:行者123 更新时间:2023-11-29 08:06:18 25 4
gpt4 key购买 nike

num Rust 中的 crate 提供了一种通过 T::zero() 表示零和一的方法和 T::one() .有没有办法表示其他整数,例如二、三等?

考虑以下(人工)示例:

extern crate num;

trait IsTwo {
fn is_two(self) -> bool;
}

impl<T: num::Integer> IsTwo for T {
fn is_two(self) -> bool {
self == (T::one() + T::one())
}
}

是否有更好的方法将 T::one() + T::one() 表示为 2

最佳答案

在通用代码中表示任意整数的一种方法是使用 num::NumCast特点:

impl<T: num::Integer + num::NumCast> IsTwo for T {
fn is_two(self) -> bool {
self == T::from(2).unwrap()
}
}

一个相关的方法是使用 num::FromPrimitive特点:

impl<T: num::Integer + num::FromPrimitive> IsTwo for T {
fn is_two(self) -> bool {
self == T::from_i32(2).unwrap()
}
}

相关问答:[ 1 , 2 ].

关于rust - 如何使用 num crate 在泛型代码中表达零和一以外的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42049342/

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