Add convenience fn's and impls for iterating and indexing MarkSets.

This commit is contained in:
Nathan Vegdahl 2020-02-23 16:24:41 +09:00
parent 4267334303
commit 6077be2dfd
2 changed files with 25 additions and 3 deletions

View File

@ -57,7 +57,7 @@ impl Buffer {
// Update mark sets. // Update mark sets.
let post_len = text.chars().count(); let post_len = text.chars().count();
for mark_set in self.mark_sets.iter_mut() { 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); *mark = mark.edit((start, end), post_len);
} }
@ -88,7 +88,7 @@ impl Buffer {
// Update mark sets. // Update mark sets.
for mark_set in self.mark_sets.iter_mut() { 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); *mark = mark.edit((start, end), post_len);
} }
@ -124,7 +124,7 @@ impl Buffer {
// Update mark sets. // Update mark sets.
for mark_set in self.mark_sets.iter_mut() { 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); *mark = mark.edit((start, end), post_len);
} }

View File

@ -208,4 +208,26 @@ impl MarkSet {
self.marks.truncate(i1 + 1); self.marks.truncate(i1 + 1);
} }
pub fn iter(&self) -> std::slice::Iter<Mark> {
self.marks.iter()
}
pub fn iter_mut(&mut self) -> std::slice::IterMut<Mark> {
self.marks.iter_mut()
}
}
impl std::ops::Index<usize> for MarkSet {
type Output = Mark;
fn index(&self, index: usize) -> &Mark {
&self.marks[index]
}
}
impl std::ops::IndexMut<usize> for MarkSet {
fn index_mut(&mut self, index: usize) -> &mut Mark {
&mut self.marks[index]
}
} }