pub struct CodexMap { /* private fields */ }Expand description
Type-indexed map storage - multiple values per type, indexed by keys.
CodexMap stores multiple values of type V indexed by keys of type K,
similar to how a HashMap stores key-value pairs, but with type-level isolation
where different (K, V) type pairs are stored separately.
Useful for sessions, caches, per-user data, etc.
§Cloning
CodexMap is cheaply cloneable via Arc. All clones share the same storage:
use magi_codex::CodexMap;
let map = CodexMap::new();
map.insert("user_1", 100u32);
let map2 = map.clone();
assert_eq!(map2.get_cloned::<&str, u32>(&"user_1"), Some(100u32));Implementations§
Source§impl CodexMap
impl CodexMap
Sourcepub fn insert<K, V>(&self, key: K, value: V)
pub fn insert<K, V>(&self, key: K, value: V)
Insert or replace a key-value pair.
§Example
use magi_codex::CodexMap;
#[derive(Clone)]
struct Session { user_id: String }
let map = CodexMap::new();
map.insert("user_123", Session { user_id: "123".into() });Sourcepub fn with<K, V, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with<K, V, F, R>(&self, key: &K, f: F) -> Option<R>
Access a value immutably via a closure.
The closure runs while holding the lock on the value.
Sourcepub fn with_mut<K, V, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with_mut<K, V, F, R>(&self, key: &K, f: F) -> Option<R>
Access a value mutably via a closure.
The closure runs while holding the lock on the value.
Sourcepub fn get_cloned<K, V>(&self, key: &K) -> Option<V>
pub fn get_cloned<K, V>(&self, key: &K) -> Option<V>
Clone and return a value (requires Clone).
Sourcepub fn contains3<K, V1, V2, V3>(&self, key: &K) -> bool
pub fn contains3<K, V1, V2, V3>(&self, key: &K) -> bool
Check if a key has values of three types.
Sourcepub fn contains4<K, V1, V2, V3, V4>(&self, key: &K) -> bool
pub fn contains4<K, V1, V2, V3, V4>(&self, key: &K) -> bool
Check if a key has values of four types.
Sourcepub fn with2<K, V1, V2, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with2<K, V1, V2, F, R>(&self, key: &K, f: F) -> Option<R>
Access two value types for the same key via a closure.
Sourcepub fn with3<K, V1, V2, V3, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with3<K, V1, V2, V3, F, R>(&self, key: &K, f: F) -> Option<R>
Access three value types for the same key via a closure.
Sourcepub fn with4<K, V1, V2, V3, V4, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with4<K, V1, V2, V3, V4, F, R>(&self, key: &K, f: F) -> Option<R>
Access four value types for the same key via a closure.
Sourcepub fn with2_mut<K, V1, V2, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with2_mut<K, V1, V2, F, R>(&self, key: &K, f: F) -> Option<R>
Mutably access two value types for the same key via a closure.
Sourcepub fn with3_mut<K, V1, V2, V3, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with3_mut<K, V1, V2, V3, F, R>(&self, key: &K, f: F) -> Option<R>
Mutably access three value types for the same key via a closure.
Sourcepub fn with4_mut<K, V1, V2, V3, V4, F, R>(&self, key: &K, f: F) -> Option<R>
pub fn with4_mut<K, V1, V2, V3, V4, F, R>(&self, key: &K, f: F) -> Option<R>
Mutably access four value types for the same key via a closure.
Sourcepub fn get2_cloned<K, V1, V2>(&self, key: &K) -> Option<(V1, V2)>
pub fn get2_cloned<K, V1, V2>(&self, key: &K) -> Option<(V1, V2)>
Clone and return two value types for the same key.
Sourcepub fn get3_cloned<K, V1, V2, V3>(&self, key: &K) -> Option<(V1, V2, V3)>
pub fn get3_cloned<K, V1, V2, V3>(&self, key: &K) -> Option<(V1, V2, V3)>
Clone and return three value types for the same key.
Sourcepub fn get4_cloned<K, V1, V2, V3, V4>(
&self,
key: &K,
) -> Option<(V1, V2, V3, V4)>
pub fn get4_cloned<K, V1, V2, V3, V4>( &self, key: &K, ) -> Option<(V1, V2, V3, V4)>
Clone and return four value types for the same key.