##// END OF EJS Templates
rhg: simplify split_metadata...
Arseniy Alekseyev -
r49064:e9faae0f default
parent child Browse files
Show More
@@ -54,28 +54,18 b' pub struct FilelogEntry(Vec<u8>);'
54 54
55 55 impl FilelogEntry {
56 56 /// Split into metadata and data
57 /// Returns None if there is no metadata, so the entire entry is data.
58 fn split_metadata(&self) -> Result<Option<(&[u8], &[u8])>, HgError> {
57 pub fn split(&self) -> Result<(Option<&[u8]>, &[u8]), HgError> {
59 58 const DELIMITER: &[u8; 2] = &[b'\x01', b'\n'];
60 59
61 60 if let Some(rest) = self.0.drop_prefix(DELIMITER) {
62 61 if let Some((metadata, data)) = rest.split_2_by_slice(DELIMITER) {
63 Ok(Some((metadata, data)))
62 Ok((Some(metadata), data))
64 63 } else {
65 64 Err(HgError::corrupted(
66 65 "Missing metadata end delimiter in filelog entry",
67 66 ))
68 67 }
69 68 } else {
70 Ok(None)
71 }
72 }
73
74 /// Split into metadata and data
75 pub fn split(&self) -> Result<(Option<&[u8]>, &[u8]), HgError> {
76 if let Some((metadata, data)) = self.split_metadata()? {
77 Ok((Some(metadata), data))
78 } else {
79 69 Ok((None, &self.0))
80 70 }
81 71 }
@@ -89,7 +79,7 b' impl FilelogEntry {'
89 79 /// Consume the entry, and convert it into data, discarding any metadata,
90 80 /// if present.
91 81 pub fn into_data(self) -> Result<Vec<u8>, HgError> {
92 if let Some((_metadata, data)) = self.split_metadata()? {
82 if let (Some(_metadata), data) = self.split()? {
93 83 Ok(data.to_owned())
94 84 } else {
95 85 Ok(self.0)
General Comments 0
You need to be logged in to leave comments. Login now