changeset 328:b5d3a9d12fa0

key_types: Fix return type of parse_internal_key and add truncate_to_userkey()
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 01 Oct 2017 20:38:07 +0200
parents 63389f1585f0
children 036e3084f8f0
files src/key_types.rs
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/key_types.rs	Sun Oct 01 20:37:42 2017 +0200
+++ b/src/key_types.rs	Sun Oct 01 20:38:07 2017 +0200
@@ -149,7 +149,7 @@
 }
 
 /// Parse a key in InternalKey format.
-pub fn parse_internal_key<'a>(ikey: InternalKey<'a>) -> (ValueType, u64, UserKey<'a>) {
+pub fn parse_internal_key<'a>(ikey: InternalKey<'a>) -> (ValueType, SequenceNumber, UserKey<'a>) {
     if ikey.is_empty() {
         return (ValueType::TypeDeletion, 0, &ikey[0..0]);
     }
@@ -158,6 +158,13 @@
     return (typ, seq, &ikey[0..ikey.len() - 8]);
 }
 
+/// truncate_to_userkey performs an in-place conversion from InternalKey to UserKey format.
+pub fn truncate_to_userkey(ikey: &mut Vec<u8>) {
+    let len = ikey.len();
+    assert!(len > 8);
+    ikey.truncate(len-8);
+}
+
 #[cfg(test)]
 mod tests {
     use super::*;