pub struct QuickClientMini {
    pub file: Arc<Mutex<File>>,
    pub cache: Arc<Mutex<HashMap<String, BinaryKvCache>>>,
}
Expand description

The Mini Client. Used for simple data storage and retrieval.

Example

use std::collections::HashMap;

use quick_kv::prelude::*;

let mut client = QuickClientMini::new(None).unwrap();

let mut map = HashMap::new();

for i in 0..9 {
    map.insert(i.to_string(), i);
}

client
    .set("test-hash", TypedValue::<i32>::Hash(map.clone()))
    .unwrap();

let map_results = client
    .get::<TypedValue<i32>>("test-hash")
    .unwrap()
    .unwrap()
    .into_hash();

for (key, value) in map_results.iter() {
    println!("{}: {}", key, value)
}

assert_eq!(map, map_results);

Fields§

§file: Arc<Mutex<File>>§cache: Arc<Mutex<HashMap<String, BinaryKvCache>>>

Implementations§

source§

impl QuickClientMini

source

pub fn new(path: Option<&str>) -> Result<Self>

Creates a new instance of the client.

path to the database file. If None is provided, the database will be created in the current working directory and default to db.qkv.

You can have as many client instances as you want, however, if you have multiple instances of the same client, you need to make sure they write to different databases or else there will be data corruption.

source

pub fn get<T>(&mut self, key: &str) -> Result<Option<T>>

Get a value from the database.

key to get the value for.

Returns Some(T) if the key exists, None if the key does not exist.

use quick_kv::prelude::*;

let mut client = QuickClientMini::new(None).unwrap();

let result = client.get::<i32>("doesnotexist").unwrap();

assert_eq!(result, None);
source

pub fn set<T>(&mut self, key: &str, value: T) -> Result<()>

Set a value in the database.

key to set the value for.

value to set for the key.

use quick_kv::prelude::*;

let mut client = QuickClientMini::new(None).unwrap();

client.set("five", Value::I32(5).into_i32()).unwrap();

let five = client.get::<i32>("five").unwrap().unwrap();

assert_eq!(five, 5);
source

pub fn delete<T>(&mut self, key: &str) -> Result<()>

Delete a value from the database.

key to delete the value for.

use quick_kv::prelude::*;

let mut client = QuickClientMini::new(None).unwrap();

client.set("five", Value::I32(5).into_i32()).unwrap();

client.delete::<i32>("five").unwrap();

let should_not_exist = client.get::<i32>("five").unwrap();

assert_eq!(should_not_exist, None);
source

pub fn update<T>(&mut self, key: &str, value: T) -> Result<()>

Update a value in the database.

key to update the value for.

value to update for the key.

use quick_kv::prelude::*;

let mut client = QuickClientMini::new(None).unwrap();

client.set("five", Value::I32(5).into_i32()).unwrap();
let five = client.get::<i32>("five").unwrap().unwrap();
assert_eq!(five, 5);

client.update("five", 10).unwrap();
let ten = client.get::<i32>("five").unwrap().unwrap();
assert_eq!(ten, 10);

Trait Implementations§

source§

impl Debug for QuickClientMini

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.