#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::ops::Mul; struct Scalar { value: usize, } #[derive(Debug, PartialEq)] struct Vector { value: Vec, } impl Mul for Vector { type Output = Self; fn mul(self, rhs: Scalar) -> Self::Output { Self { value: self.value.iter().map(|v| v * rhs.value).collect(), } } } fn main() { let vector = Vector { value: vec![2, 4, 6] }; let scalar = Scalar { value: 3 }; assert_eq!(vector * scalar, Vector { value : vec![6, 12, 18] }); }