INNER CODE UNIT · Rust

insert

xoriors/rencfs · src/arc_hashmap.rs:46

    pub fn insert(&self, key: K, value: V) -> Holder<'_, K, V> {
        self.get_or_insert_with(key, || value)
    }

    #[allow(clippy::missing_panics_doc)]
    pub fn get(&self, key: &K) -> Option<Holder<'_, K, V>> {
        self.get_internal(self.map.read().expect("cannot obtain lock").get(key))
    }

    fn get_internal(&self, v: Option<&Value<V>>) -> Option<Holder<'_, K, V>> {
        if let Some((v, rc)) = v {
            rc.fetch_add(1, Ordering::SeqCst);
            return Some(Holder {
                val: v.clone(),
                rc: rc.clone(),
                map: self,
            });
        }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…