mirror of
https://github.com/denoland/deno.git
synced 2024-12-18 13:22:55 -05:00
fix: deno_resolver crate without 'sync' feature (#27403)
This commit is contained in:
parent
ee9f24cdcd
commit
d632ec9e70
1 changed files with 21 additions and 7 deletions
|
@ -13,21 +13,35 @@ mod inner {
|
||||||
|
|
||||||
#[cfg(not(feature = "sync"))]
|
#[cfg(not(feature = "sync"))]
|
||||||
mod inner {
|
mod inner {
|
||||||
|
use std::cell::Ref;
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use std::hash::BuildHasher;
|
||||||
|
use std::hash::Hash;
|
||||||
use std::hash::RandomState;
|
use std::hash::RandomState;
|
||||||
pub use std::rc::Rc as MaybeArc;
|
pub use std::rc::Rc as MaybeArc;
|
||||||
|
|
||||||
// Wrapper struct that exposes a subset of `DashMap` API.
|
// Wrapper struct that exposes a subset of `DashMap` API.
|
||||||
#[derive(Default)]
|
#[derive(Debug)]
|
||||||
struct MaybeDashMap<K, V, S = RandomState>(RefCell<HashMap<K, V, S>>);
|
pub struct MaybeDashMap<K, V, S = RandomState>(RefCell<HashMap<K, V, S>>);
|
||||||
|
|
||||||
impl MaybeDashMap<K, V, S> {
|
impl<K, V, S> Default for MaybeDashMap<K, V, S>
|
||||||
pub fn get(&'a self, key: &K) -> Option<&'a V> {
|
where
|
||||||
let inner = self.0.borrow();
|
K: Eq + Hash,
|
||||||
inner.get(key)
|
S: Default + BuildHasher + Clone,
|
||||||
|
{
|
||||||
|
fn default() -> Self {
|
||||||
|
Self(RefCell::new(Default::default()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<K: Eq + Hash, V, S: BuildHasher> MaybeDashMap<K, V, S> {
|
||||||
|
pub fn get<'a>(&'a self, key: &K) -> Option<Ref<'a, V>> {
|
||||||
|
Ref::filter_map(self.0.borrow(), |map| map.get(key)).ok()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn insert(&self, key: K, value: V) -> Option<V> {
|
pub fn insert(&self, key: K, value: V) -> Option<V> {
|
||||||
let inner = self.0.borrow_mut();
|
let mut inner = self.0.borrow_mut();
|
||||||
inner.insert(key, value)
|
inner.insert(key, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue