Add documentation to explain the process
diff --git a/src/grid/mod.rs b/src/grid/mod.rs
index 0564cdf..15ddf30 100644
--- a/src/grid/mod.rs
+++ b/src/grid/mod.rs
@@ -747,25 +747,28 @@
 
     #[inline]
     fn next(&mut self) -> Option<Self::Item> {
-        // Make sure indices are valid. Return None if we've reached the end.
+        // Check if the end of the line was reached
         let next_line = self.col == self.grid.num_cols();
         if next_line {
+            // Return `None` if we've reached the end of the last line
             if self.offset == self.limit {
                 return None;
             }
 
+            // Switch to the next line
             self.col = Column(0);
             self.offset -= 1;
             self.line = Line(*self.grid.lines - 1 - (self.offset - self.limit));
         }
 
-        // Return the next item.
+        // Return the next item
         let item = Some(Indexed {
             inner: self.grid.raw[self.offset][self.col],
             line: self.line,
             column: self.col
         });
 
+        // Only increment column if the line hasn't changed
         if !next_line {
             self.col += 1;
         }