Mercurial > lbo > hg > leveldb-rs
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 {