#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::ops::ShlAssign; #[derive(Debug, PartialEq)] struct Scalar(usize); impl ShlAssign for Scalar { fn shl_assign(&mut self, rhs: usize) { self.0 <<= rhs; } } fn main() { let mut scalar = Scalar(4); scalar <<= 2; assert_eq!(scalar, Scalar(16)); }