diff --git a/sub_crates/backend/src/buffer.rs b/sub_crates/backend/src/buffer.rs index e383165..80050d0 100644 --- a/sub_crates/backend/src/buffer.rs +++ b/sub_crates/backend/src/buffer.rs @@ -57,7 +57,7 @@ impl Buffer { // Update mark sets. let post_len = text.chars().count(); for mark_set in self.mark_sets.iter_mut() { - for mark in mark_set.marks.iter_mut() { + for mark in mark_set.iter_mut() { *mark = mark.edit((start, end), post_len); } @@ -88,7 +88,7 @@ impl Buffer { // Update mark sets. for mark_set in self.mark_sets.iter_mut() { - for mark in mark_set.marks.iter_mut() { + for mark in mark_set.iter_mut() { *mark = mark.edit((start, end), post_len); } @@ -124,7 +124,7 @@ impl Buffer { // Update mark sets. for mark_set in self.mark_sets.iter_mut() { - for mark in mark_set.marks.iter_mut() { + for mark in mark_set.iter_mut() { *mark = mark.edit((start, end), post_len); } diff --git a/sub_crates/backend/src/marks.rs b/sub_crates/backend/src/marks.rs index 2c2bed5..383769d 100644 --- a/sub_crates/backend/src/marks.rs +++ b/sub_crates/backend/src/marks.rs @@ -208,4 +208,26 @@ impl MarkSet { self.marks.truncate(i1 + 1); } + + pub fn iter(&self) -> std::slice::Iter { + self.marks.iter() + } + + pub fn iter_mut(&mut self) -> std::slice::IterMut { + self.marks.iter_mut() + } +} + +impl std::ops::Index for MarkSet { + type Output = Mark; + + fn index(&self, index: usize) -> &Mark { + &self.marks[index] + } +} + +impl std::ops::IndexMut for MarkSet { + fn index_mut(&mut self, index: usize) -> &mut Mark { + &mut self.marks[index] + } }