Abstract over MutexGuards.
This commit is contained in:
parent
8e3c9714c0
commit
37edb8e774
|
@ -1,4 +1,4 @@
|
|||
use parking_lot::{Mutex, MutexGuard};
|
||||
use parking_lot::Mutex;
|
||||
use std::convert::{TryInto, TryFrom};
|
||||
use std::fs::{create_dir_all, read_link, remove_file, rename, File};
|
||||
use std::io::{Read, Write};
|
||||
|
@ -14,6 +14,7 @@ use pathdiff::diff_paths;
|
|||
|
||||
use {Database, Delete, Verify, Query};
|
||||
use types::{Email, Fingerprint, KeyID};
|
||||
use sync::MutexGuard;
|
||||
use Result;
|
||||
|
||||
pub struct Filesystem {
|
||||
|
@ -381,7 +382,7 @@ fn symlink(symlink_content: &Path, symlink_name: &Path) -> Result<()> {
|
|||
|
||||
impl Database for Filesystem {
|
||||
fn lock(&self) -> MutexGuard<()> {
|
||||
self.update_lock.lock()
|
||||
self.update_lock.lock().into()
|
||||
}
|
||||
|
||||
fn new_verify_token(&self, payload: Verify) -> Result<String> {
|
||||
|
|
|
@ -15,7 +15,6 @@ use failure::Fallible as Result;
|
|||
extern crate idna;
|
||||
#[macro_use] extern crate log;
|
||||
extern crate parking_lot;
|
||||
use parking_lot::MutexGuard;
|
||||
extern crate pathdiff;
|
||||
extern crate rand;
|
||||
extern crate serde;
|
||||
|
@ -41,6 +40,9 @@ use serde::{Serialize, Deserialize, Deserializer, Serializer};
|
|||
pub mod types;
|
||||
use types::{Email, Fingerprint, KeyID};
|
||||
|
||||
pub mod sync;
|
||||
use sync::MutexGuard;
|
||||
|
||||
mod fs;
|
||||
pub use self::fs::Filesystem;
|
||||
mod memory;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use parking_lot::{Mutex, MutexGuard};
|
||||
use parking_lot::Mutex;
|
||||
use std::collections::HashMap;
|
||||
|
||||
use {Database, Delete, Verify, Query};
|
||||
use types::{Email, Fingerprint, KeyID};
|
||||
use sync::MutexGuard;
|
||||
use Result;
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -34,7 +35,7 @@ impl Default for Memory {
|
|||
|
||||
impl Database for Memory {
|
||||
fn lock(&self) -> MutexGuard<()> {
|
||||
self.update_lock.lock()
|
||||
self.update_lock.lock().into()
|
||||
}
|
||||
|
||||
fn new_verify_token(&self, payload: Verify) -> Result<String> {
|
||||
|
|
|
@ -3,7 +3,7 @@ use std::path::PathBuf;
|
|||
use {Database, Delete, Filesystem, Memory, Verify, Query};
|
||||
use Result;
|
||||
use types::{Email, Fingerprint, KeyID};
|
||||
use parking_lot::MutexGuard;
|
||||
use sync::MutexGuard;
|
||||
|
||||
pub enum Polymorphic {
|
||||
Memory(Memory),
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
use parking_lot;
|
||||
|
||||
pub enum MutexGuard<'a, T> {
|
||||
ParkingLot(parking_lot::MutexGuard<'a, T>),
|
||||
}
|
||||
|
||||
impl<'a, T> From<parking_lot::MutexGuard<'a, T>> for MutexGuard<'a, T> {
|
||||
fn from(g: parking_lot::MutexGuard<'a, T>) -> Self {
|
||||
MutexGuard::ParkingLot(g)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue