我在Rust中有以下代码
use num_complex::Complex64;
pub trait RealComplex where Self : std::iter::Sum, for<'a,'b> &'a Self : std::ops::Mul<&'b Complex64, Output=Complex64> {}
impl RealComplex for f64 {}
impl RealComplex for Complex64 {}
struct A<T> {
a : T
}
impl<T : RealComplex> A<T> {
fn get(self) -> T {
self.T
}
}
特性RealComplex
意味着类型实现std::iter::Sum
,并且我可以将此类型的引用乘以Complex64
的引用。
但是似乎没有编译器抱怨我根本无法使用此特征。
我想完成的事情:我想要一个通用的Matrix Type,它仅实现像这样的Matrix-Vector乘法:
struct SparseMatrix<T> {
data : Vec<Vec<T>>
}
impl<T : RealComplex> SparseMatrix<T> {
fn multByVec(&self, &[Complex64]) -> Vec<Complex64> {
...
}
}
这应该在f64
和Complex64
上通用