Я хочу создать трейт, в котором говорится, что он реализует num_traits: : pow :: Pow - Ржавчина.
Моя черта в настоящее время определяется как:
pub trait PrimeSieveTrait:
AddAssign + MulAssign + integer::Roots + FromPrimitive + ToPrimitive + PartialOrd + Copy {}
impl<T> PrimeSieveTrait for T
where T:
AddAssign + MulAssign + integer::Roots + FromPrimitive + ToPrimitive + PartialOrd + Copy {}
Типы T
, которые меня волнуют, - это u32
и u64
, в которых уже есть .pow()
функция, реализованная в num_traits :: pow :: Pow - Rust, и которые возвращают u32
и u64
. Как я могу изменить определение признака, чтобы работала указанная ниже функция?
fn test_case<T: PrimeSieveTrait>(p: T, x: u32) -> T {
let one = T::from_u8(1).unwrap();
p.pow(x) - one
}
Pow<Output = Self>
к существующим границам черт? - person Cerberus   schedule 01.10.2020Pow<T, Output = Self>
, но он по-прежнему говорит, что метод не найден вT
- person simonzack   schedule 01.10.2020