1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
//! Define trait for vectors use ndarray::{LinalgScalar, Array, Ix1}; use num_traits::float::Float; /// Methods for vectors pub trait Vector { type Scalar; /// L-2 norm fn norm(&self) -> Self::Scalar; } impl<A: Float + LinalgScalar> Vector for Array<A, Ix1> { type Scalar = A; fn norm(&self) -> Self::Scalar { self.dot(&self).sqrt() } }