我对这个例子感到困惑。尽管i32实现了所有的Num + One + Zero + PartialOrd + RemAssign + Ord,当我将它们放入特征中以便我可以给出别名时,它不起作用。
use num_traits::{Num, identities::One, identities::Zero};
use std::cmp::{Ord, PartialOrd};
use std::ops::RemAssign;
pub trait Math: Num + One + Zero + PartialOrd + RemAssign + Ord {}
fn s<T: Num + One + Zero + PartialOrd + Ord + RemAssign>(t: T) {
unimplemented!();
}
fn ss<T: Math>(t: T) {
unimplemented!();
}
fn sss() {
let x: i32 = 5;
ss(x);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法强制所有执行的事情都Num + One + Zero + PartialOrd + RemAssign + Ord执行Math?
是的,通过添加一个毯子实现:
impl<T: Num + One + Zero + PartialOrd + RemAssign + Ord> Math for T {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |