[][src]Struct tyozo::Memdb

pub struct Memdb { /* fields omitted */ }

Methods

impl Memdb[src]

pub fn new() -> Memdb[src]

pub fn restore(
    db_file_path: &str,
    log_file_path: &str
) -> Result<Memdb, Box<dyn Error>>
[src]

pub fn exec<S: Into<String>>(&mut self, input: S) -> Result<String, String>[src]

Example

use tyozo::Memdb;
let mut db = Memdb::new();

let result = db.exec("set hoge value");
assert_eq!(result, Ok(String::from("OK")));

let result = db.exec("get hoge");
assert_eq!(result, Ok(String::from("value")));

db.exec("set fuga value").unwrap();
let result = db.exec("del hoge fuga");
assert_eq!(result, Ok(String::from("2")));

let result = db.exec("setnx hoge value");
assert!(result.is_ok());

let result = db.exec("setnx hoge value");
assert!(result.is_err());

pub fn exec_command(&mut self, command: Command) -> Result<String, String>[src]

pub fn set(&mut self, key: impl AsRef<str>, value: impl AsRef<[u8]>)[src]

Example

use tyozo::Memdb;
let mut memdb = Memdb::new();

memdb.set("key", "value");
assert_eq!(memdb.inner().get("key"), Some(&b"value".to_vec()));

// value is override
memdb.set("key", "next value");
assert_eq!(memdb.inner().get("key"), Some(&b"next value".to_vec()));

pub fn setnx(
    &mut self,
    key: impl AsRef<str>,
    value: impl AsRef<[u8]>
) -> Result<(), String>
[src]

Example

use tyozo::Memdb;
let mut memdb = Memdb::new();
let result = memdb.setnx("key", "value");
assert!(result.is_ok());
assert_eq!(memdb.inner().get("key"), Some(&b"value".to_vec()));
// value is not override
let result = memdb.setnx("key", "next value");
assert!(result.is_err());
assert_eq!(memdb.inner().get("key"), Some(&b"value".to_vec()));

pub fn get(&self, key: impl AsRef<str>) -> Option<Vec<u8>>[src]

Exmaple

use tyozo::Memdb;
let mut memdb = Memdb::new();

memdb.set("key", "value");

assert_eq!(memdb.get("key"), Some(b"value".to_vec()));

assert_eq!(memdb.get("not setted key"), None);

pub fn del(&mut self, keys: Vec<impl AsRef<str>>) -> usize[src]

Exmaple

use tyozo::Memdb;
let mut memdb = Memdb::new();
memdb.set("key", "value");

let delete_count = memdb.del(vec!["key", "key2"]);

assert_eq!(delete_count, 1);
assert_eq!(memdb.get("key"), None);

let delete_count = memdb.del(vec!["key"]);
assert_eq!(delete_count, 0);

pub fn inner(&self) -> &HashMap<String, Vec<u8>>[src]

pub fn serialize(&self) -> Vec<u8>[src]

Example

use tyozo::Memdb;

let mut memdb = Memdb::new();
memdb.set("k", "v");

let serialized = memdb.serialize();

assert_eq!(serialized, vec![0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 107, 118]);

pub fn deserialize(input: &[u8]) -> Result<Memdb, String>[src]

Example

use tyozo::Memdb;

let input = &vec![0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 107, 118, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 118, 107];

let mut deserialized = Memdb::deserialize(input).unwrap();

let result = deserialized.exec("get k");
assert_eq!(result, Ok(String::from("v")));

let result = deserialized.exec("get v");
assert_eq!(result, Ok(String::from("k")));

Trait Implementations

impl Clone for Memdb[src]

impl Debug for Memdb[src]

impl Default for Memdb[src]

impl PartialEq<Memdb> for Memdb[src]

impl StructuralPartialEq for Memdb[src]

Auto Trait Implementations

impl RefUnwindSafe for Memdb

impl Send for Memdb

impl Sync for Memdb

impl Unpin for Memdb

impl UnwindSafe for Memdb

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.