#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::ops::Shl; #[derive(PartialEq, Debug)] struct SpinVector { vec: Vec, } impl Shl for SpinVector { type Output = Self; fn shl(self, rhs: usize) -> Self::Output { let (a, b) = self.vec.split_at(rhs); let mut spun_vector = vec![]; spun_vector.extend_from_slice(b); spun_vector.extend_from_slice(a); Self { vec: spun_vector } } } fn main() { assert_eq!( SpinVector { vec : vec![0, 1, 2, 3, 4] } << 2, SpinVector { vec : vec![2, 3, 4, 0, 1] } ); }