@@ -486,26 +486,34 @@ div_impl_float! { f32 f64 }
486486/// 
487487/// # Examples 
488488/// 
489- /// A trivial implementation of `Rem`. When `Foo % Foo` happens, it ends up 
490- /// calling `rem`, and therefore, `main` prints `Remainder-ing!`. 
489+ /// This example implements `Rem` on a `SplitSlice` object. After `Rem` is 
490+ /// implemented, one can use the `%` operator to find out what the remaining 
491+ /// elements of the slice would be after splitting it into equal slices of a 
492+ /// given length. 
491493/// 
492494/// ``` 
493495/// use std::ops::Rem; 
494496/// 
495- /// struct Foo; 
497+ /// #[derive(PartialEq, Debug)] 
498+ /// struct SplitSlice<'a, T: 'a> { 
499+ ///     slice: &'a [T], 
500+ /// } 
496501/// 
497- /// impl  Rem for Foo  { 
498- ///     type Output = Foo ; 
502+ /// impl<'a, T>  Rem<usize>  for SplitSlice<'a, T>  { 
503+ ///     type Output = SplitSlice<'a, T> ; 
499504/// 
500- ///     fn rem(self, _rhs: Foo) -> Foo { 
501- ///         println!("Remainder-ing!"); 
502- ///         self 
505+ ///     fn rem(self, modulus: usize) -> Self { 
506+ ///         let len = self.slice.len(); 
507+ ///         let rem = len % modulus; 
508+ ///         let start = len - rem; 
509+ ///         SplitSlice {slice: &self.slice[start..]} 
503510///     } 
504511/// } 
505512/// 
506- /// fn main() { 
507- ///     Foo % Foo; 
508- /// } 
513+ /// // If we were to divide &[0, 1, 2, 3, 4, 5, 6, 7] into slices of size 3, 
514+ /// // the remainder would be &[6, 7] 
515+ /// assert_eq!(SplitSlice { slice: &[0, 1, 2, 3, 4, 5, 6, 7] } % 3, 
516+ ///            SplitSlice { slice: &[6, 7] }); 
509517/// ``` 
510518#[ lang = "rem" ]  
511519#[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
0 commit comments