A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/text/bookmark.rs')
| -rw-r--r-- | src/text/bookmark.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/text/bookmark.rs b/src/text/bookmark.rs new file mode 100644 index 0000000..ebda796 --- /dev/null +++ b/src/text/bookmark.rs @@ -0,0 +1,33 @@ +use std::ops::{Deref, DerefMut}; + +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Serialize, Deserialize, Default, Debug)] +pub struct Bookmark { + pub position: usize, + pub text: String, +} + +#[derive(Clone, Serialize, Deserialize, Default, Debug)] +pub struct Bookmarks(Vec<Bookmark>); + +impl DerefMut for Bookmarks { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +impl Deref for Bookmarks { + type Target = Vec<Bookmark>; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} +impl Bookmarks { + pub fn manipulate(&mut self, mut f: impl FnMut(usize) -> usize) { + for lem in &mut self.0 { + lem.position = f(lem.position); + } + } +} |