changeset 380:36b70e7af130

leveldb-tool: Add 'iter' mode.
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 08 Oct 2017 17:25:53 +0200
parents 57890f618949
children 353f7b3f3400
files examples/leveldb-tool/src/main.rs
diffstat 1 files changed, 30 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/examples/leveldb-tool/src/main.rs	Sun Oct 08 16:47:52 2017 +0200
+++ b/examples/leveldb-tool/src/main.rs	Sun Oct 08 17:25:53 2017 +0200
@@ -1,6 +1,6 @@
 extern crate leveldb_rs;
 
-use leveldb_rs::{DB, Options};
+use leveldb_rs::{DB, LdbIterator, Options};
 
 use std::env::args;
 use std::iter::FromIterator;
@@ -22,11 +22,25 @@
     db.flush().unwrap();
 }
 
+fn iter(db: &mut DB) {
+    let mut it = db.new_iter().unwrap();
+    while let Some((k, v)) = it.next() {
+        match (String::from_utf8(k), String::from_utf8(v)) {
+            (Ok(sk), Ok(sv)) => println!("{} => {}", sk, sv),
+            (Err(utf8e), Ok(sv)) => println!("{:?} => {}", utf8e.into_bytes(), sv),
+            (Ok(sk), Err(utf8e)) => println!("{} => {:?}", sk, utf8e.into_bytes()),
+            (Err(utf81), Err(utf82)) => {
+                println!("{:?} => {:?}", utf81.into_bytes(), utf82.into_bytes())
+            }
+        }
+    }
+}
+
 fn main() {
     let args = Vec::from_iter(args());
 
-    if args.len() < 3 {
-        panic!("Usage: {} [get|put|delete] key [val]", args[0]);
+    if args.len() < 2 {
+        panic!("Usage: {} [get|put|delete|iter] [key] [val]", args[0]);
     }
 
     let mut opt = Options::default();
@@ -34,14 +48,25 @@
     let mut db = DB::open("tooldb", opt).unwrap();
 
     match args[1].as_str() {
-        "get" => get(&mut db, &args[2]),
+        "get" => {
+            if args.len() < 3 {
+                panic!("Usage: {} get key", args[0]);
+            }
+            get(&mut db, &args[2]);
+        }
         "put" => {
             if args.len() < 4 {
                 panic!("Usage: {} put key val", args[0]);
             }
             put(&mut db, &args[2], &args[3]);
         }
-        "delete" => delete(&mut db, &args[2]),
+        "delete" => {
+            if args.len() < 3 {
+                panic!("Usage: {} delete key", args[0]);
+            }
+            delete(&mut db, &args[2]);
+        }
+        "iter" => iter(&mut db),
         _ => unimplemented!(),
     }
 }