Я пытаюсь реализовать общую функцию в Rust, где единственным требованием для аргумента является то, что операция умножения должна быть определена. Я пытаюсь реализовать общую "власть", но пойдет с более простой функцией cube
, чтобы проиллюстрировать проблему:
use std::ops::Mul;
fn cube<T: Mul>(x: T) -> T {
x * x * x
}
fn main() {
println!("5^3 = {}", cube(5));
}
При компиляции я получаю эту ошибку:
error[E0369]: binary operation `*` cannot be applied to type `<T as std::ops::Mul>::Output`
--> src/main.rs:4:5
|
4 | x * x * x
| ^^^^^^^^^
|
= note: an implementation of `std::ops::Mul` might be missing for `<T as std::ops::Mul>::Output`
Что это значит? Я выбрал неправильную черту? Как я могу это решить?