my fork of dmp
Diffstat (limited to 'src/diff.rs')
| -rw-r--r-- | src/diff.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/diff.rs b/src/diff.rs new file mode 100644 index 0000000..689a9b2 --- /dev/null +++ b/src/diff.rs @@ -0,0 +1,28 @@ +use serde_repr::{Deserialize_repr, Serialize_repr}; + +/// Enum representing the different ops of diff +#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize_repr, Deserialize_repr)] +#[repr(i8)] +pub enum Ops { + Delete = -1, + Insert, + Equal, +} + +/// A trait defining Diff operations +pub trait DiffTrait<T: Sized + Copy + Ord + Eq> { + fn new(op: Ops, lines: &[T]) -> Self; + + /// helper functions to create ops + fn delete(lines: &[T]) -> Self; + + fn insert(lines: &[T]) -> Self; + + fn equal(lines: &[T]) -> Self; + + // returns the operation of the current diff + fn op(&self) -> Ops; + + // returns the inner data + fn data(&self) -> &[T]; +}
\ No newline at end of file |