A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/text/bookmark.rs')
-rw-r--r--src/text/bookmark.rs33
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);
+ }
+ }
+}