hex_patch/app/history/
change.rs1#[derive(Debug, Clone, PartialEq, Eq)]
2pub struct Change {
3 offset: usize,
4 old: Vec<u8>,
5 new: Vec<u8>,
6}
7
8impl Change {
9 pub fn new(offset: usize, old: &[u8], new: &[u8]) -> Self {
10 if old.len() != new.len() {
11 panic!("{}", t!("panic.data_length_mismatch"));
12 }
13 Self {
14 offset,
15 old: old.to_vec(),
16 new: new.to_vec(),
17 }
18 }
19
20 pub fn offset(&self) -> usize {
21 self.offset
22 }
23
24 pub fn len(&self) -> usize {
25 self.old.len()
26 }
27
28 pub fn is_empty(&self) -> bool {
29 self.old.is_empty()
30 }
31
32 pub fn apply(&self, data: &mut Vec<u8>) {
33 data.splice(
34 self.offset..self.offset + self.old.len(),
35 self.new.iter().cloned(),
36 );
37 }
38
39 pub fn revert(&self, data: &mut Vec<u8>) {
40 data.splice(
41 self.offset..self.offset + self.new.len(),
42 self.old.iter().cloned(),
43 );
44 }
45}