gpt4 book ai didi

rust - 为什么T实现了A+B但没有实现特征C : A+B?

转载 作者:行者123 更新时间:2023-12-02 01:53:21 26 4
gpt4 key购买 nike

我对这个例子感到困惑。尽管 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);
}

Playground

有没有办法强制所有实现Num + One + Zero + PartialOrd + RemAssign + Ord的东西实现Math

最佳答案

是的,通过添加一个毯子实现:

impl<T: Num + One + Zero + PartialOrd + RemAssign + Ord> Math for T {}

关于rust - 为什么T实现了A+B但没有实现特征C : A+B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69916809/

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