# HG changeset patch # User Arseniy Alekseyev # Date 1676574197 0 # Node ID 8e50aa0db347529b15e3a9072fcfc43e224cb690 # Parent 11661326b410e432bfc1b1547290f0ae495914ac rhg: in path_encode, use Vec directly instead of VecDest No need to have a trivial wrapper over the type. There's nothing confusing about vec.write_bytes(...), after all. diff -r 11661326b410 -r 8e50aa0db347 rust/hg-core/src/revlog/path_encode.rs --- a/rust/hg-core/src/revlog/path_encode.rs Thu Feb 16 19:00:56 2023 +0000 +++ b/rust/hg-core/src/revlog/path_encode.rs Thu Feb 16 19:03:17 2023 +0000 @@ -77,29 +77,17 @@ } } -struct VecDest { - buf: Vec, -} - struct MeasureDest { pub len: usize, } -impl VecDest { - pub fn create(capacity : usize) -> Self { - Self { - buf: Vec::with_capacity(capacity), - } - } -} - -impl Sink for VecDest { +impl Sink for Vec { fn write_byte(&mut self, c: u8) { - self.buf.push(c) + self.push(c) } fn write_bytes(&mut self, src: &[u8]) { - self.buf.extend_from_slice(src) + self.extend_from_slice(src) } } @@ -544,13 +532,13 @@ src[s..].iter().rposition(|b| *b == b'.').map(|i| i + s) }; - let mut dest : VecDest = VecDest::create(MAXSTOREPATHLEN); + let mut dest = Vec::with_capacity(MAXSTOREPATHLEN); dest.write_bytes(b"dh/"); if let Some(last_slash) = last_slash { for slice in src[..last_slash].split(|b| *b == b'/') { let slice = &slice[..std::cmp::min(slice.len(), dirprefixlen)]; - if dest.buf.len() + slice.len() > maxshortdirslen + 3 { + if dest.len() + slice.len() > maxshortdirslen + 3 { break; } else { dest.write_bytes(slice); @@ -559,7 +547,7 @@ } } - let used = dest.buf.len() + 40 + { + let used = dest.len() + 40 + { if let Some(l) = last_dot { src.len() - l } else { @@ -588,7 +576,7 @@ if let Some(l) = last_dot { dest.write_bytes(&src[l..]); } - dest.buf + dest } fn hash_encode(src: &[u8]) -> Vec { @@ -618,10 +606,10 @@ if newlen == path.len() { path.to_vec() } else { - let mut dest = VecDest::create(newlen); + let mut dest = Vec::with_capacity(newlen); basic_encode(&mut dest, path); - assert!(dest.buf.len() == newlen); - dest.buf + assert!(dest.len() == newlen); + dest } } else { hash_encode(path)