changeset 62:528985d33b75

Use plain non-generic Options; separate out Comparator and FilterPolicy params
author Lewin Bormann <lbo@spheniscida.de>
date Sat, 02 Jul 2016 15:50:30 +0200
parents 15f12f242a80
children 5d5ece851f8f
files src/block.rs src/lib.rs src/options.rs src/types.rs
diffstat 4 files changed, 24 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/block.rs	Sat Jul 02 15:12:49 2016 +0200
+++ b/src/block.rs	Sat Jul 02 15:50:30 2016 +0200
@@ -223,7 +223,8 @@
 }
 
 pub struct BlockBuilder<C: Comparator> {
-    opt: Options<C>,
+    opt: Options,
+    cmp: C,
     buffer: Vec<u8>,
     restarts: Vec<u32>,
 
@@ -232,13 +233,14 @@
 }
 
 impl<C: Comparator> BlockBuilder<C> {
-    fn new(o: Options<C>) -> BlockBuilder<C> {
+    pub fn new(o: Options, cmp: C) -> BlockBuilder<C> {
         let mut restarts = vec![0];
         restarts.reserve(1023);
 
         BlockBuilder {
             buffer: Vec::with_capacity(o.block_size),
             opt: o,
+            cmp: cmp,
             restarts: restarts,
             last_key: Vec::new(),
             counter: 0,
@@ -340,7 +342,7 @@
         let mut o = Options::default();
         o.block_restart_interval = 3;
 
-        let mut builder = BlockBuilder::new(o);
+        let mut builder = BlockBuilder::new(o, StandardComparator);
 
         for &(k, v) in get_data().iter() {
             builder.add(k, v);
@@ -355,7 +357,7 @@
     #[test]
     fn test_build_iterate() {
         let data = get_data();
-        let mut builder = BlockBuilder::new(Options::default());
+        let mut builder = BlockBuilder::new(Options::default(), StandardComparator);
 
         for &(k, v) in data.iter() {
             builder.add(k, v);
@@ -378,7 +380,7 @@
         let mut o = Options::default();
         o.block_restart_interval = 3;
         let data = get_data();
-        let mut builder = BlockBuilder::new(o);
+        let mut builder = BlockBuilder::new(o, StandardComparator);
 
         for &(k, v) in data.iter() {
             builder.add(k, v);
@@ -408,7 +410,7 @@
         o.block_restart_interval = 3;
 
         let data = get_data();
-        let mut builder = BlockBuilder::new(o);
+        let mut builder = BlockBuilder::new(o, StandardComparator);
 
         for &(k, v) in data.iter() {
             builder.add(k, v);
--- a/src/lib.rs	Sat Jul 02 15:12:49 2016 +0200
+++ b/src/lib.rs	Sat Jul 02 15:50:30 2016 +0200
@@ -16,6 +16,7 @@
 mod options;
 mod skipmap;
 mod snapshot;
+mod table;
 mod types;
 mod write_batch;
 
--- a/src/options.rs	Sat Jul 02 15:12:49 2016 +0200
+++ b/src/options.rs	Sat Jul 02 15:50:30 2016 +0200
@@ -1,12 +1,17 @@
-use types::{Comparator, SequenceNumber, StandardComparator};
-use filter::FilterPolicy;
+use types::SequenceNumber;
 
 use std::default::Default;
 
+#[derive(Clone, Copy)]
+pub enum CompressionType {
+    CompressionNone = 0,
+    CompressionSnappy = 1,
+}
+
 /// [not all member types implemented yet]
 ///
-pub struct Options<C: Comparator> {
-    pub cmp: C,
+#[derive(Clone, Copy)]
+pub struct Options {
     pub create_if_missing: bool,
     pub error_if_exists: bool,
     pub paranoid_checks: bool,
@@ -16,15 +21,13 @@
     // pub block_cache: Cache,
     pub block_size: usize,
     pub block_restart_interval: usize,
-    // pub compression_type: CompressionType,
+    pub compression_type: CompressionType,
     pub reuse_logs: bool,
-    pub filter_policy: Option<Box<FilterPolicy>>,
 }
 
-impl Default for Options<StandardComparator> {
-    fn default() -> Options<StandardComparator> {
+impl Default for Options {
+    fn default() -> Options {
         Options {
-            cmp: StandardComparator,
             create_if_missing: true,
             error_if_exists: false,
             paranoid_checks: false,
@@ -33,7 +36,7 @@
             block_size: 4 << 10,
             block_restart_interval: 16,
             reuse_logs: false,
-            filter_policy: None,
+            compression_type: CompressionType::CompressionNone,
         }
     }
 }
--- a/src/types.rs	Sat Jul 02 15:12:49 2016 +0200
+++ b/src/types.rs	Sat Jul 02 15:50:30 2016 +0200
@@ -20,10 +20,11 @@
 
 /// Trait used to influence how SkipMap determines the order of elements. Use StandardComparator
 /// for the normal implementation using numerical comparison.
-pub trait Comparator {
+pub trait Comparator: Copy {
     fn cmp(&[u8], &[u8]) -> Ordering;
 }
 
+#[derive(Clone, Copy)]
 pub struct StandardComparator;
 
 impl Comparator for StandardComparator {