Skip to main content

fresh/model/
edit.rs

1/// Represents a single edit operation in the buffer's history
2#[derive(Clone, Debug)]
3pub struct Edit {
4    pub version: u64,
5    pub kind: EditKind,
6}
7
8/// The type of edit operation
9#[derive(Clone, Debug)]
10pub enum EditKind {
11    /// Insert operation: bytes were inserted at offset
12    Insert { offset: usize, len: usize },
13    /// Delete operation: bytes were deleted at offset
14    Delete { offset: usize, len: usize },
15}
16
17impl Edit {
18    /// Create a new insert edit
19    pub fn insert(version: u64, offset: usize, len: usize) -> Self {
20        Self {
21            version,
22            kind: EditKind::Insert { offset, len },
23        }
24    }
25
26    /// Create a new delete edit
27    pub fn delete(version: u64, offset: usize, len: usize) -> Self {
28        Self {
29            version,
30            kind: EditKind::Delete { offset, len },
31        }
32    }
33}