diff --git a/src/cache.rs b/src/cache.rs index a64fd78..2d31a78 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -6,90 +6,3 @@ use std::{ ToOwned, }, }; - -pub trait Cache -{ - fn cap(&self) -> Option; - fn len(&self) -> usize; - - fn insert(&mut self, value: T) -> &T; - fn get>(&self, value: &Q) -> Option<&T>; -} - -pub struct MemCache(Vec); -pub struct UnlimitedMemCache(Vec); - -impl MemCache -{ - /// Create a new cache with a max size - pub fn new(cap: usize) -> Self - { - Self(Vec::with_capacity(cap)) - } -} - -impl Cache for MemCache -{ - fn cap(&self) -> Option - { - Some(self.0.capacity()) - } - fn len(&self) -> usize - { - self.0.len() - } - - fn insert(&mut self, value: T) -> &T - { - if self.0.len() == self.0.capacity() { - self.0.remove(self.0.len()-1); - } - self.0.insert(0, value); - &self.0[0] - } - - fn get>(&self, value: &Q) -> Option<&T> - { - for x in self.0.iter() { - if value.eq(x) { - return Some(x); - } - } - None - } -} - -impl UnlimitedMemCache -{ - /// Create a new cache - pub fn new() -> Self - { - Self(Vec::new()) - } -} - -// extension - -pub trait CacheExt -{ - /// Insert into the cache if borrowed value is not present, - fn clone_insert<'a, Q>(&'a mut self, refer: &Q) -> &'a T - where Q: ToOwned + ?Sized + PartialEq, - T: Borrow; -} - -impl CacheExt for S -where S: Cache, - T: Clone -{ - fn clone_insert<'a, Q>(&'a mut self, refer: &Q) -> &'a T - where Q: ToOwned + ?Sized + PartialEq, - T: Borrow - { - if let Some(get) = self.get(refer) { - return get; - } - - self.insert(refer.to_owned()) - } -} diff --git a/src/main.rs b/src/main.rs index dfa7d50..4c65412 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,10 +12,6 @@ mod bytes; mod suspend; mod cache; -use cache::{ - Cache, - CacheExt as _, -}; mod config; mod tripcode;