proximity-cache 0.1.1

Experiments on approximate vector search in high-dimensional spaces
Documentation
use std::{
    cell::RefCell,
    rc::{Rc, Weak},
};

pub(crate) type SharedNode<K, V> = Rc<RefCell<Node<K, V>>>;
pub(crate) type WeakSharedNode<K, V> = Weak<RefCell<Node<K, V>>>;

#[derive(Debug)]
pub struct Node<K, V> {
    pub(crate) key: K,
    pub(crate) value: V,
    pub(crate) prev: Option<WeakSharedNode<K, V>>,
    pub(crate) next: Option<SharedNode<K, V>>,
}

impl<K, V> Node<K, V> {
    pub fn new(key: K, value: V) -> Rc<RefCell<Self>> {
        Rc::new(RefCell::new(Node {
            key,
            value,
            prev: None,
            next: None,
        }))
    }
}