From 6077be2dfd4c56f2ebe58ca2f6a9c28f11744f46 Mon Sep 17 00:00:00 2001 From: Nathan Vegdahl Date: Sun, 23 Feb 2020 16:24:41 +0900 Subject: [PATCH] Add convenience fn's and impls for iterating and indexing MarkSets. --- sub_crates/backend/src/buffer.rs | 6 +++--- sub_crates/backend/src/marks.rs | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) 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] + } }