Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
R
rust-rocksdb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangzongwu
rust-rocksdb
Commits
f2b6d109
Commit
f2b6d109
authored
Nov 28, 2014
by
Tyler Neely
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rocksdb -> RocksDB
parent
e08f60e5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
129 additions
and
129 deletions
+129
-129
README.md
README.md
+2
-2
lib.rs
rocksdb-sys/lib.rs
+64
-64
lib.rs
src/lib.rs
+2
-2
main.rs
src/main.rs
+4
-4
rocksdb.rs
src/rocksdb.rs
+57
-57
No files found.
README.md
View file @
f2b6d109
...
...
@@ -11,10 +11,10 @@ RocksDB 3.8.1 will be pulled in and compiled automatically.
###### Code
```
rust
extern
crate
rocksdb
;
use
rocksdb
::
Rocks
db
;
use
rocksdb
::
Rocks
DB
;
fn
main
()
{
match
Rocks
db
::
open_default
(
"/path/for/rocksdb/storage"
)
{
match
Rocks
DB
::
open_default
(
"/path/for/rocksdb/storage"
)
{
Ok
(
db
)
=>
{
db
.put
(
b
"my key"
,
b
"my value"
);
...
...
rocksdb-sys/lib.rs
View file @
f2b6d109
...
...
@@ -2,116 +2,116 @@ extern crate libc;
use
self
::
libc
::{
c_char
,
c_int
,
c_void
,
size_t
};
#[repr(C)]
pub
struct
Rocks
db
Options
(
pub
*
const
c_void
);
pub
struct
Rocks
DB
Options
(
pub
*
const
c_void
);
#[repr(C)]
pub
struct
Rocks
db
Instance
(
pub
*
const
c_void
);
pub
struct
Rocks
DB
Instance
(
pub
*
const
c_void
);
#[repr(C)]
pub
struct
Rocks
db
WriteOptions
(
pub
*
const
c_void
);
pub
struct
Rocks
DB
WriteOptions
(
pub
*
const
c_void
);
#[repr(C)]
pub
struct
Rocks
db
ReadOptions
(
pub
*
const
c_void
);
pub
struct
Rocks
DB
ReadOptions
(
pub
*
const
c_void
);
#[repr(C)]
pub
struct
Rocks
db
CompactionFilter
(
pub
*
const
c_void
);
pub
struct
Rocks
DB
CompactionFilter
(
pub
*
const
c_void
);
#[repr(C)]
pub
struct
Rocks
db
MergeOperator
(
pub
*
const
c_void
);
pub
struct
Rocks
DB
MergeOperator
(
pub
*
const
c_void
);
#[repr(C)]
pub
struct
Rocks
db
FilterPolicy
(
pub
*
const
c_void
);
pub
struct
Rocks
DB
FilterPolicy
(
pub
*
const
c_void
);
#[repr(C)]
pub
enum
Rocks
db
CompressionType
{
Rocks
db
NoCompression
=
0
,
Rocks
db
SnappyCompression
=
1
,
Rocks
db
ZlibCompression
=
2
,
Rocks
db
Bz2Compression
=
3
,
Rocks
db
Lz4Compression
=
4
,
Rocks
db
Lz4hcCompression
=
5
pub
enum
Rocks
DB
CompressionType
{
Rocks
DB
NoCompression
=
0
,
Rocks
DB
SnappyCompression
=
1
,
Rocks
DB
ZlibCompression
=
2
,
Rocks
DB
Bz2Compression
=
3
,
Rocks
DB
Lz4Compression
=
4
,
Rocks
DB
Lz4hcCompression
=
5
}
#[repr(C)]
pub
enum
Rocks
db
CompactionStyle
{
Rocks
db
LevelCompaction
=
0
,
Rocks
db
UniversalCompaction
=
1
,
Rocks
db
FifoCompaction
=
2
pub
enum
Rocks
DB
CompactionStyle
{
Rocks
DB
LevelCompaction
=
0
,
Rocks
DB
UniversalCompaction
=
1
,
Rocks
DB
FifoCompaction
=
2
}
#[repr(C)]
pub
enum
Rocks
db
UniversalCompactionStyle
{
pub
enum
Rocks
DB
UniversalCompactionStyle
{
rocksdb_similar_size_compaction_stop_style
=
0
,
rocksdb_total_size_compaction_stop_style
=
1
}
#[link(name
=
"rocksdb"
)]
extern
{
pub
fn
rocksdb_options_create
()
->
Rocks
db
Options
;
pub
fn
rocksdb_options_create
()
->
Rocks
DB
Options
;
pub
fn
rocksdb_options_increase_parallelism
(
options
:
Rocks
db
Options
,
threads
:
c_int
);
options
:
Rocks
DB
Options
,
threads
:
c_int
);
pub
fn
rocksdb_options_optimize_level_style_compaction
(
options
:
Rocks
db
Options
,
memtable_memory_budget
:
c_int
);
options
:
Rocks
DB
Options
,
memtable_memory_budget
:
c_int
);
pub
fn
rocksdb_options_set_create_if_missing
(
options
:
Rocks
db
Options
,
v
:
c_int
);
options
:
Rocks
DB
Options
,
v
:
c_int
);
pub
fn
rocksdb_options_set_max_open_files
(
options
:
Rocks
db
Options
,
files
:
c_int
);
options
:
Rocks
DB
Options
,
files
:
c_int
);
pub
fn
rocksdb_options_set_use_fsync
(
options
:
Rocks
db
Options
,
v
:
c_int
);
options
:
Rocks
DB
Options
,
v
:
c_int
);
pub
fn
rocksdb_options_set_bytes_per_sync
(
options
:
Rocks
db
Options
,
bytes
:
u64
);
options
:
Rocks
DB
Options
,
bytes
:
u64
);
pub
fn
rocksdb_options_set_disable_data_sync
(
options
:
Rocks
db
Options
,
v
:
c_int
);
options
:
Rocks
DB
Options
,
v
:
c_int
);
pub
fn
rocksdb_options_optimize_for_point_lookup
(
options
:
Rocks
db
Options
,
block_cache_size_mb
:
u64
);
options
:
Rocks
DB
Options
,
block_cache_size_mb
:
u64
);
pub
fn
rocksdb_options_set_table_cache_numshardbits
(
options
:
Rocks
db
Options
,
bits
:
u64
);
options
:
Rocks
DB
Options
,
bits
:
u64
);
pub
fn
rocksdb_options_set_max_write_buffer_number
(
options
:
Rocks
db
Options
,
bufno
:
c_int
);
options
:
Rocks
DB
Options
,
bufno
:
c_int
);
pub
fn
rocksdb_options_set_min_write_buffer_number_to_merge
(
options
:
Rocks
db
Options
,
bufno
:
c_int
);
options
:
Rocks
DB
Options
,
bufno
:
c_int
);
pub
fn
rocksdb_options_set_level0_file_num_compaction_trigger
(
options
:
Rocks
db
Options
,
no
:
c_int
);
options
:
Rocks
DB
Options
,
no
:
c_int
);
pub
fn
rocksdb_options_set_level0_slowdown_writes_trigger
(
options
:
Rocks
db
Options
,
no
:
c_int
);
options
:
Rocks
DB
Options
,
no
:
c_int
);
pub
fn
rocksdb_options_set_level0_stop_writes_trigger
(
options
:
Rocks
db
Options
,
no
:
c_int
);
options
:
Rocks
DB
Options
,
no
:
c_int
);
pub
fn
rocksdb_options_set_write_buffer_size
(
options
:
Rocks
db
Options
,
bytes
:
u64
);
options
:
Rocks
DB
Options
,
bytes
:
u64
);
pub
fn
rocksdb_options_set_target_file_size_base
(
options
:
Rocks
db
Options
,
bytes
:
u64
);
options
:
Rocks
DB
Options
,
bytes
:
u64
);
pub
fn
rocksdb_options_set_target_file_size_multiplier
(
options
:
Rocks
db
Options
,
mul
:
c_int
);
options
:
Rocks
DB
Options
,
mul
:
c_int
);
pub
fn
rocksdb_options_set_max_log_file_size
(
options
:
Rocks
db
Options
,
bytes
:
u64
);
options
:
Rocks
DB
Options
,
bytes
:
u64
);
pub
fn
rocksdb_options_set_max_manifest_file_size
(
options
:
Rocks
db
Options
,
bytes
:
u64
);
options
:
Rocks
DB
Options
,
bytes
:
u64
);
pub
fn
rocksdb_options_set_hash_skip_list_rep
(
options
:
Rocks
db
Options
,
bytes
:
u64
,
a1
:
i32
,
a2
:
i32
);
options
:
Rocks
DB
Options
,
bytes
:
u64
,
a1
:
i32
,
a2
:
i32
);
pub
fn
rocksdb_options_set_compaction_style
(
options
:
Rocks
dbOptions
,
cs
:
Rocksdb
CompactionStyle
);
options
:
Rocks
DBOptions
,
cs
:
RocksDB
CompactionStyle
);
pub
fn
rocksdb_options_set_compression
(
options
:
Rocks
db
Options
,
compression_style_no
:
c_int
);
options
:
Rocks
DB
Options
,
compression_style_no
:
c_int
);
pub
fn
rocksdb_options_set_max_background_compactions
(
options
:
Rocks
db
Options
,
max_bg_compactions
:
c_int
);
options
:
Rocks
DB
Options
,
max_bg_compactions
:
c_int
);
pub
fn
rocksdb_options_set_max_background_flushes
(
options
:
Rocks
db
Options
,
max_bg_flushes
:
c_int
);
options
:
Rocks
DB
Options
,
max_bg_flushes
:
c_int
);
pub
fn
rocksdb_options_set_filter_deletes
(
options
:
Rocks
db
Options
,
v
:
u8
);
//pub fn rocksdb_compactionfilter_create() -> Rocks
db
CompactionFilter;
options
:
Rocks
DB
Options
,
v
:
u8
);
//pub fn rocksdb_compactionfilter_create() -> Rocks
DB
CompactionFilter;
pub
fn
rocksdb_filterpolicy_create_bloom
(
bits_per_key
:
c_int
)
->
Rocks
db
FilterPolicy
;
pub
fn
rocksdb_open
(
options
:
Rocks
db
Options
,
path
:
*
const
i8
,
err
:
*
mut
i8
)
->
Rocks
db
Instance
;
pub
fn
rocksdb_writeoptions_create
()
->
Rocks
db
WriteOptions
;
pub
fn
rocksdb_put
(
db
:
Rocks
dbInstance
,
writeopts
:
Rocksdb
WriteOptions
,
bits_per_key
:
c_int
)
->
Rocks
DB
FilterPolicy
;
pub
fn
rocksdb_open
(
options
:
Rocks
DB
Options
,
path
:
*
const
i8
,
err
:
*
mut
i8
)
->
Rocks
DB
Instance
;
pub
fn
rocksdb_writeoptions_create
()
->
Rocks
DB
WriteOptions
;
pub
fn
rocksdb_put
(
db
:
Rocks
DBInstance
,
writeopts
:
RocksDB
WriteOptions
,
k
:
*
const
u8
,
kLen
:
size_t
,
v
:
*
const
u8
,
vLen
:
size_t
,
err
:
*
mut
i8
);
pub
fn
rocksdb_readoptions_create
()
->
Rocks
db
ReadOptions
;
pub
fn
rocksdb_get
(
db
:
Rocks
dbInstance
,
readopts
:
Rocksdb
ReadOptions
,
pub
fn
rocksdb_readoptions_create
()
->
Rocks
DB
ReadOptions
;
pub
fn
rocksdb_get
(
db
:
Rocks
DBInstance
,
readopts
:
RocksDB
ReadOptions
,
k
:
*
const
u8
,
kLen
:
size_t
,
valLen
:
*
const
size_t
,
err
:
*
mut
i8
)
->
*
mut
c_void
;
pub
fn
rocksdb_delete
(
db
:
Rocks
dbInstance
,
writeopts
:
Rocksdb
WriteOptions
,
pub
fn
rocksdb_delete
(
db
:
Rocks
DBInstance
,
writeopts
:
RocksDB
WriteOptions
,
k
:
*
const
u8
,
kLen
:
size_t
,
err
:
*
mut
i8
)
->
*
mut
c_void
;
pub
fn
rocksdb_close
(
db
:
Rocks
db
Instance
);
pub
fn
rocksdb_close
(
db
:
Rocks
DB
Instance
);
pub
fn
rocksdb_destroy_db
(
options
:
Rocks
db
Options
,
path
:
*
const
i8
,
err
:
*
mut
i8
);
options
:
Rocks
DB
Options
,
path
:
*
const
i8
,
err
:
*
mut
i8
);
pub
fn
rocksdb_repair_db
(
options
:
Rocks
db
Options
,
path
:
*
const
i8
,
err
:
*
mut
i8
);
options
:
Rocks
DB
Options
,
path
:
*
const
i8
,
err
:
*
mut
i8
);
// Merge Operator
pub
fn
rocksdb_mergeoperator_create
(
...
...
@@ -132,11 +132,11 @@ extern {
)
->
*
const
c_char
,
delete_value
:
extern
fn
(
*
mut
c_void
,
value
:
*
const
c_char
,
value_len
:
*
mut
size_t
)
->
(),
name_fn
:
extern
fn
(
*
mut
c_void
)
->
*
const
c_char
,
)
->
Rocks
db
MergeOperator
;
pub
fn
rocksdb_mergeoperator_destroy
(
mo
:
Rocks
db
MergeOperator
);
)
->
Rocks
DB
MergeOperator
;
pub
fn
rocksdb_mergeoperator_destroy
(
mo
:
Rocks
DB
MergeOperator
);
pub
fn
rocksdb_options_set_merge_operator
(
options
:
Rocks
db
Options
,
mo
:
Rocks
db
MergeOperator
);
options
:
Rocks
DB
Options
,
mo
:
Rocks
DB
MergeOperator
);
}
#[allow(dead_code)]
...
...
@@ -144,7 +144,7 @@ extern {
fn
internal
()
{
unsafe
{
let
opts
=
rocksdb_options_create
();
let
Rocks
db
Options
(
opt_ptr
)
=
opts
;
let
Rocks
DB
Options
(
opt_ptr
)
=
opts
;
assert
!
(
opt_ptr
.is_not_null
());
rocksdb_options_increase_parallelism
(
opts
,
0
);
...
...
@@ -161,7 +161,7 @@ fn internal() {
libc
::
free
(
err
as
*
mut
c_void
);
let
writeopts
=
rocksdb_writeoptions_create
();
let
Rocks
db
WriteOptions
(
write_opt_ptr
)
=
writeopts
;
let
Rocks
DB
WriteOptions
(
write_opt_ptr
)
=
writeopts
;
assert
!
(
write_opt_ptr
.is_not_null
());
let
key
=
b
"name
\x00
"
;
...
...
@@ -172,7 +172,7 @@ fn internal() {
libc
::
free
(
err
as
*
mut
c_void
);
let
readopts
=
rocksdb_readoptions_create
();
let
Rocks
db
ReadOptions
(
read_opts_ptr
)
=
readopts
;
let
Rocks
DB
ReadOptions
(
read_opts_ptr
)
=
readopts
;
assert
!
(
read_opts_ptr
.is_not_null
());
libc
::
free
(
err
as
*
mut
c_void
);
...
...
src/lib.rs
View file @
f2b6d109
...
...
@@ -5,7 +5,7 @@
extern
crate
"rocksdb-sys"
as
rocksdb_ffi
;
pub
use
rocksdb
::{
Rocks
db
,
Rocks
db
Result
,
Rocks
DB
,
Rocks
DB
Result
,
};
pub
mod
rocksdb
;
src/main.rs
View file @
f2b6d109
extern
crate
rocksdb
;
extern
crate
test
;
use
rocksdb
::
Rocks
db
;
use
rocksdb
::
Rocks
DB
;
use
test
::
Bencher
;
#[allow(dead_code)]
fn
main
()
{
match
Rocks
db
::
open_default
(
"/tmp/rust-rocksdb"
)
{
match
Rocks
DB
::
open_default
(
"/tmp/rust-rocksdb"
)
{
Ok
(
db
)
=>
{
assert
!
(
db
.put
(
b
"my key"
,
b
"my value"
)
.is_ok
());
...
...
@@ -31,7 +31,7 @@ fn main() {
#[allow(dead_code)]
#[bench]
fn
writes
(
b
:
&
mut
Bencher
)
{
let
db
=
Rocks
db
::
open_default
(
"testdb"
)
.unwrap
();
let
db
=
Rocks
DB
::
open_default
(
"testdb"
)
.unwrap
();
let
mut
i
=
0
as
u64
;
b
.iter
(||
{
db
.put
(
i
.to_string
()
.as_bytes
(),
b
"v1111"
);
...
...
@@ -43,7 +43,7 @@ fn writes(b: &mut Bencher) {
#[allow(dead_code)]
#[bench]
fn
reads
(
b
:
&
mut
Bencher
)
{
let
db
=
Rocks
db
::
open_default
(
"testdb"
)
.unwrap
();
let
db
=
Rocks
DB
::
open_default
(
"testdb"
)
.unwrap
();
let
mut
i
=
0
as
u64
;
b
.iter
(||
{
db
.get
(
i
.to_string
()
.as_bytes
())
.on_error
(
...
...
src/rocksdb.rs
View file @
f2b6d109
...
...
@@ -7,20 +7,20 @@ use std::str::from_utf8;
use
rocksdb_ffi
;
pub
struct
Rocks
db
Options
{
inner
:
rocksdb_ffi
::
Rocks
db
Options
,
pub
struct
Rocks
DB
Options
{
inner
:
rocksdb_ffi
::
Rocks
DB
Options
,
}
impl
Rocks
db
Options
{
pub
fn
new
()
->
Rocks
db
Options
{
impl
Rocks
DB
Options
{
pub
fn
new
()
->
Rocks
DB
Options
{
unsafe
{
let
opts
=
rocksdb_ffi
::
rocksdb_options_create
();
let
rocksdb_ffi
::
Rocks
db
Options
(
opt_ptr
)
=
opts
;
let
rocksdb_ffi
::
Rocks
DB
Options
(
opt_ptr
)
=
opts
;
if
opt_ptr
.is_null
()
{
panic!
(
"Could not create rocksdb options"
.to_string
());
}
Rocks
db
Options
{
inner
:
opts
}
Rocks
DB
Options
{
inner
:
opts
}
}
}
...
...
@@ -45,25 +45,25 @@ impl RocksdbOptions {
}
}
pub
fn
set_merge_operator
(
&
self
,
mo
:
rocksdb_ffi
::
Rocks
db
MergeOperator
)
{
pub
fn
set_merge_operator
(
&
self
,
mo
:
rocksdb_ffi
::
Rocks
DB
MergeOperator
)
{
unsafe
{
rocksdb_ffi
::
rocksdb_options_set_merge_operator
(
self
.inner
,
mo
);
}
}
}
pub
struct
Rocks
db
{
inner
:
rocksdb_ffi
::
Rocks
db
Instance
,
pub
struct
Rocks
DB
{
inner
:
rocksdb_ffi
::
Rocks
DB
Instance
,
}
impl
Rocks
db
{
pub
fn
open_default
(
path
:
&
str
)
->
Result
<
Rocks
db
,
String
>
{
let
opts
=
Rocks
db
Options
::
new
();
impl
Rocks
DB
{
pub
fn
open_default
(
path
:
&
str
)
->
Result
<
Rocks
DB
,
String
>
{
let
opts
=
Rocks
DB
Options
::
new
();
opts
.create_if_missing
(
true
);
Rocks
db
::
open
(
opts
,
path
)
Rocks
DB
::
open
(
opts
,
path
)
}
pub
fn
open
(
opts
:
Rocks
dbOptions
,
path
:
&
str
)
->
Result
<
Rocksdb
,
String
>
{
pub
fn
open
(
opts
:
Rocks
DBOptions
,
path
:
&
str
)
->
Result
<
RocksDB
,
String
>
{
unsafe
{
let
cpath
=
path
.to_c_str
();
let
cpath_ptr
=
cpath
.as_ptr
();
...
...
@@ -73,7 +73,7 @@ impl Rocksdb {
let
err
=
0
as
*
mut
i8
;
let
db
=
rocksdb_ffi
::
rocksdb_open
(
opts
.inner
,
cpath_ptr
,
err
);
let
rocksdb_ffi
::
Rocks
db
Instance
(
db_ptr
)
=
db
;
let
rocksdb_ffi
::
Rocks
DB
Instance
(
db_ptr
)
=
db
;
if
err
.is_not_null
()
{
let
cs
=
CString
::
new
(
err
as
*
const
i8
,
true
);
match
cs
.as_str
()
{
...
...
@@ -86,7 +86,7 @@ impl Rocksdb {
if
db_ptr
.is_null
()
{
return
Err
(
"Could not initialize database."
.to_string
());
}
Ok
(
Rocks
db
{
inner
:
db
})
Ok
(
Rocks
DB
{
inner
:
db
})
}
}
...
...
@@ -116,12 +116,12 @@ impl Rocksdb {
}
}
pub
fn
get
<
'a
>
(
&
self
,
key
:
&
[
u8
])
->
Rocks
dbResult
<
'a
,
Rocksdb
Vector
,
String
>
{
pub
fn
get
<
'a
>
(
&
self
,
key
:
&
[
u8
])
->
Rocks
DBResult
<
'a
,
RocksDB
Vector
,
String
>
{
unsafe
{
let
readopts
=
rocksdb_ffi
::
rocksdb_readoptions_create
();
let
rocksdb_ffi
::
Rocks
db
ReadOptions
(
read_opts_ptr
)
=
readopts
;
let
rocksdb_ffi
::
Rocks
DB
ReadOptions
(
read_opts_ptr
)
=
readopts
;
if
read_opts_ptr
.is_null
()
{
return
Rocks
db
Result
::
Error
(
"Unable to create rocksdb read
\
return
Rocks
DB
Result
::
Error
(
"Unable to create rocksdb read
\
options. This is a fairly trivial call, and its failure
\
may be indicative of a mis-compiled or mis-loaded rocksdb
\
library."
.to_string
());
...
...
@@ -136,17 +136,17 @@ impl Rocksdb {
let
cs
=
CString
::
new
(
err
as
*
const
i8
,
true
);
match
cs
.as_str
()
{
Some
(
error_string
)
=>
return
Rocks
db
Result
::
Error
(
error_string
.to_string
()),
return
Rocks
DB
Result
::
Error
(
error_string
.to_string
()),
None
=>
return
Rocks
db
Result
::
Error
(
"Unable to get value from
\
return
Rocks
DB
Result
::
Error
(
"Unable to get value from
\
rocksdb. (non-utf8 error received from underlying
\
library)"
.to_string
()),
}
}
match
val
.is_null
()
{
true
=>
Rocks
db
Result
::
None
,
true
=>
Rocks
DB
Result
::
None
,
false
=>
{
Rocks
dbResult
::
Some
(
Rocksdb
Vector
::
from_c
(
val
,
val_len
))
Rocks
DBResult
::
Some
(
RocksDB
Vector
::
from_c
(
val
,
val_len
))
}
}
}
...
...
@@ -182,14 +182,14 @@ impl Rocksdb {
}
}
pub
struct
Rocks
db
Vector
{
pub
struct
Rocks
DB
Vector
{
inner
:
CVec
<
u8
>
,
}
impl
Rocks
db
Vector
{
pub
fn
from_c
(
val
:
*
mut
u8
,
val_len
:
size_t
)
->
Rocks
db
Vector
{
impl
Rocks
DB
Vector
{
pub
fn
from_c
(
val
:
*
mut
u8
,
val_len
:
size_t
)
->
Rocks
DB
Vector
{
unsafe
{
Rocks
db
Vector
{
Rocks
DB
Vector
{
inner
:
CVec
::
new_with_dtor
(
val
,
val_len
as
uint
,
proc
(){
libc
::
free
(
val
as
*
mut
c_void
);
})
...
...
@@ -206,73 +206,73 @@ impl RocksdbVector {
}
}
// Rocks
db
Result exists because of the inherent difference between
// Rocks
DB
Result exists because of the inherent difference between
// an operational failure and the absence of a possible result.
#[deriving(Clone,
PartialEq,
PartialOrd,
Eq,
Ord,
Show)]
pub
enum
Rocks
db
Result
<
'a
,
T
,
E
>
{
pub
enum
Rocks
DB
Result
<
'a
,
T
,
E
>
{
Some
(
T
),
None
,
Error
(
E
),
}
impl
<
'a
,
T
,
E
>
Rocks
db
Result
<
'a
,
T
,
E
>
{
impl
<
'a
,
T
,
E
>
Rocks
DB
Result
<
'a
,
T
,
E
>
{
#[unstable
=
"waiting for unboxed closures"
]
pub
fn
map
<
U
>
(
self
,
f
:
|
T
|
->
U
)
->
Rocks
db
Result
<
U
,
E
>
{
pub
fn
map
<
U
>
(
self
,
f
:
|
T
|
->
U
)
->
Rocks
DB
Result
<
U
,
E
>
{
match
self
{
Rocks
dbResult
::
Some
(
x
)
=>
Rocksdb
Result
::
Some
(
f
(
x
)),
Rocks
dbResult
::
None
=>
Rocksdb
Result
::
None
,
Rocks
dbResult
::
Error
(
e
)
=>
Rocksdb
Result
::
Error
(
e
),
Rocks
DBResult
::
Some
(
x
)
=>
RocksDB
Result
::
Some
(
f
(
x
)),
Rocks
DBResult
::
None
=>
RocksDB
Result
::
None
,
Rocks
DBResult
::
Error
(
e
)
=>
RocksDB
Result
::
Error
(
e
),
}
}
pub
fn
unwrap
(
self
)
->
T
{
match
self
{
Rocks
db
Result
::
Some
(
x
)
=>
x
,
Rocks
dbResult
::
None
=>
panic!
(
"Attempted unwrap on Rocksdb
Result::None"
),
Rocks
dbResult
::
Error
(
_
)
=>
panic!
(
"Attempted unwrap on Rocksdb
Result::Error"
),
Rocks
DB
Result
::
Some
(
x
)
=>
x
,
Rocks
DBResult
::
None
=>
panic!
(
"Attempted unwrap on RocksDB
Result::None"
),
Rocks
DBResult
::
Error
(
_
)
=>
panic!
(
"Attempted unwrap on RocksDB
Result::Error"
),
}
}
#[unstable
=
"waiting for unboxed closures"
]
pub
fn
on_error
<
U
>
(
self
,
f
:
|
E
|
->
U
)
->
Rocks
db
Result
<
T
,
U
>
{
pub
fn
on_error
<
U
>
(
self
,
f
:
|
E
|
->
U
)
->
Rocks
DB
Result
<
T
,
U
>
{
match
self
{
Rocks
dbResult
::
Some
(
x
)
=>
Rocksdb
Result
::
Some
(
x
),
Rocks
dbResult
::
None
=>
Rocksdb
Result
::
None
,
Rocks
dbResult
::
Error
(
e
)
=>
Rocksdb
Result
::
Error
(
f
(
e
)),
Rocks
DBResult
::
Some
(
x
)
=>
RocksDB
Result
::
Some
(
x
),
Rocks
DBResult
::
None
=>
RocksDB
Result
::
None
,
Rocks
DBResult
::
Error
(
e
)
=>
RocksDB
Result
::
Error
(
f
(
e
)),
}
}
#[unstable
=
"waiting for unboxed closures"
]
pub
fn
on_absent
(
self
,
f
:
||
->
())
->
Rocks
db
Result
<
T
,
E
>
{
pub
fn
on_absent
(
self
,
f
:
||
->
())
->
Rocks
DB
Result
<
T
,
E
>
{
match
self
{
Rocks
dbResult
::
Some
(
x
)
=>
Rocksdb
Result
::
Some
(
x
),
Rocks
db
Result
::
None
=>
{
Rocks
DBResult
::
Some
(
x
)
=>
RocksDB
Result
::
Some
(
x
),
Rocks
DB
Result
::
None
=>
{
f
();
Rocks
db
Result
::
None
Rocks
DB
Result
::
None
},
Rocks
dbResult
::
Error
(
e
)
=>
Rocksdb
Result
::
Error
(
e
),
Rocks
DBResult
::
Error
(
e
)
=>
RocksDB
Result
::
Error
(
e
),
}
}
pub
fn
is_some
(
self
)
->
bool
{
match
self
{
Rocks
db
Result
::
Some
(
_
)
=>
true
,
Rocks
db
Result
::
None
=>
false
,
Rocks
db
Result
::
Error
(
_
)
=>
false
,
Rocks
DB
Result
::
Some
(
_
)
=>
true
,
Rocks
DB
Result
::
None
=>
false
,
Rocks
DB
Result
::
Error
(
_
)
=>
false
,
}
}
pub
fn
is_none
(
self
)
->
bool
{
match
self
{
Rocks
db
Result
::
Some
(
_
)
=>
false
,
Rocks
db
Result
::
None
=>
true
,
Rocks
db
Result
::
Error
(
_
)
=>
false
,
Rocks
DB
Result
::
Some
(
_
)
=>
false
,
Rocks
DB
Result
::
None
=>
true
,
Rocks
DB
Result
::
Error
(
_
)
=>
false
,
}
}
pub
fn
is_error
(
self
)
->
bool
{
match
self
{
Rocks
db
Result
::
Some
(
_
)
=>
false
,
Rocks
db
Result
::
None
=>
false
,
Rocks
db
Result
::
Error
(
_
)
=>
true
,
Rocks
DB
Result
::
Some
(
_
)
=>
false
,
Rocks
DB
Result
::
None
=>
false
,
Rocks
DB
Result
::
Error
(
_
)
=>
true
,
}
}
}
...
...
@@ -280,10 +280,10 @@ impl <'a,T,E> RocksdbResult<'a,T,E> {
#[allow(dead_code)]
#[test]
fn
external
()
{
let
db
=
Rocks
db
::
open_default
(
"externaltest"
)
.unwrap
();
let
db
=
Rocks
DB
::
open_default
(
"externaltest"
)
.unwrap
();
let
p
=
db
.put
(
b
"k1"
,
b
"v1111"
);
assert
!
(
p
.is_ok
());
let
r
:
Rocks
dbResult
<
Rocksdb
Vector
,
String
>
=
db
.get
(
b
"k1"
);
let
r
:
Rocks
DBResult
<
RocksDB
Vector
,
String
>
=
db
.get
(
b
"k1"
);
assert
!
(
r
.unwrap
()
.to_utf8
()
.unwrap
()
==
"v1111"
);
assert
!
(
db
.delete
(
b
"k1"
)
.is_ok
());
assert
!
(
db
.get
(
b
"k1"
)
.is_none
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment