diff --git a/Cargo.lock b/Cargo.lock index aa430dc84ac7..8afbc318d8d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -552,10 +552,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "context" -version = "0.1.0" - [[package]] name = "convert_case" version = "0.6.0" diff --git a/libs/context/Cargo.toml b/libs/context/Cargo.toml deleted file mode 100644 index 885c7fd2b32d..000000000000 --- a/libs/context/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "context" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/libs/context/src/lib.rs b/libs/context/src/lib.rs deleted file mode 100644 index bff4fc553088..000000000000 --- a/libs/context/src/lib.rs +++ /dev/null @@ -1,87 +0,0 @@ -use std::{ - any::{Any, TypeId}, - collections::HashMap, - sync::{Arc, Mutex}, -}; - -#[derive(Debug, Default)] -pub struct Context { - store: HashMap<(String, TypeId), Box>, -} - -impl Context { - pub fn concurrent(self) -> Arc> { - Arc::new(Mutex::new(self)) - } - - pub fn insert(&mut self, key: &str, value: T) { - self.store.insert((key.to_owned(), TypeId::of::()), Box::new(value)); - } - - pub fn get(&self, key: &str) -> Option<&T> { - self.store - .get(&(key.to_owned(), TypeId::of::())) - .map(|v| v.downcast_ref::().unwrap()) - } - - pub fn get_mut(&mut self, key: &str) -> Option<&mut T> { - self.store - .get_mut(&(key.to_owned(), TypeId::of::())) - .map(|v| v.downcast_mut::().unwrap()) - } - - pub fn remove(&mut self, key: &str) -> Option { - self.store - .remove(&(key.to_owned(), TypeId::of::())) - .map(|v| *v.downcast::().unwrap()) - } -} - -#[cfg(test)] -mod tests { - use super::Context; - - #[test] - fn set_and_retrieve() { - let mut ctx: Context = Context::default(); - ctx.insert("foo", 42 as u32); - - let val: u32 = *ctx.get("foo").unwrap(); - assert_eq!(val, 42 as u32) - } - - #[test] - fn concurrent() { - let mut ctx: Context = Context::default(); - ctx.insert("foo", 42 as u32); - - assert_eq!(42 as u32, *ctx.get::("foo").unwrap()); - assert_eq!(None, ctx.get::("bar")); - - let safe_context = ctx.concurrent(); - let mut ctx = safe_context.lock().unwrap(); - ctx.insert("bar", 32 as u32); - assert_eq!(32 as u32, *ctx.get::("bar").unwrap()); - assert_eq!(42 as u32, *ctx.get::("foo").unwrap()); - } - - #[test] - fn get_mut() { - let mut ctx: Context = Context::default(); - ctx.insert("foo", 42 as u32); - - let val: &mut u32 = ctx.get_mut("foo").unwrap(); - *val = 32 as u32; - assert_eq!(32 as u32, *ctx.get::("foo").unwrap()); - } - - #[test] - fn remove() { - let mut ctx: Context = Context::default(); - ctx.insert("foo", 42 as u32); - - let val: u32 = ctx.remove("foo").unwrap(); - assert_eq!(42 as u32, val); - assert_eq!(None, ctx.get::("foo")); - } -}