HashMapStore

Struct HashMapStore 

Source
pub struct HashMapStore { /* private fields */ }
Expand description

A simple implementation of Store based on RwLock wrapped HashMap

This provider doesn’t support key expiration thus Storage will return errors when trying to use methods that require expiration functionality.

§Example

use actix_storage::Storage;
use actix_storage_hashmap::HashMapStore;
use actix_web::{App, HttpServer};

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let storage = Storage::build().store(HashMapStore::new()).finish();
    let server = HttpServer::new(move || {
        App::new()
            .data(storage.clone())
    });
    server.bind("localhost:5000")?.run().await
}

Implementations§

Source§

impl HashMapStore

Source

pub fn new() -> Self

Make a new store, with default capacity of 0

Source

pub fn with_capacity(capacity: usize) -> Self

Make a new store, with specified capacity

Source

pub fn from_hashmap( map: HashMap<Arc<[u8]>, HashMap<Arc<[u8]>, Arc<[u8]>>>, ) -> Self

Make a new store from a hashmap

Trait Implementations§

Source§

impl Debug for HashMapStore

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for HashMapStore

Source§

fn default() -> HashMapStore

Returns the “default value” for a type. Read more
Source§

impl Store for HashMapStore

Source§

fn set<'life0, 'async_trait>( &'life0 self, scope: Arc<[u8]>, key: Arc<[u8]>, value: Arc<[u8]>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Set a key-value pair, if the key already exist, value should be overwritten
Source§

fn get<'life0, 'async_trait>( &'life0 self, scope: Arc<[u8]>, key: Arc<[u8]>, ) -> Pin<Box<dyn Future<Output = Result<Option<Arc<[u8]>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get a value for specified key, it should result in None if the value does not exist
Source§

fn delete<'life0, 'async_trait>( &'life0 self, scope: Arc<[u8]>, key: Arc<[u8]>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Delete the key from storage, if the key doesn’t exist, it shouldn’t return an error
Source§

fn contains_key<'life0, 'async_trait>( &'life0 self, scope: Arc<[u8]>, key: Arc<[u8]>, ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Check if key exist in storage

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,