From 374a63d8e08659c1b9ba457421450c24fe3cf3c0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 16 Dec 2021 19:54:58 +0800 Subject: [PATCH] 1 --- src/lib.rs | 2 ++ src/metamgr.rs | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/metamgr.rs diff --git a/src/lib.rs b/src/lib.rs index a1c3b5e..abf67de 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,5 +8,7 @@ mod tests { } mod xvalue; +mod metamgr; pub use xvalue::XValue; +pub use metamgr::MetaMgr; diff --git a/src/metamgr.rs b/src/metamgr.rs new file mode 100644 index 0000000..1215c09 --- /dev/null +++ b/src/metamgr.rs @@ -0,0 +1,52 @@ +use std::rc::Rc; +use std::collections::HashMap; + +struct MetaClass { + file_name: String, + idx: i32, + prim_key: String, + sec_key: String, + wrap_list: Vec>, + wrap_id_hash: HashMap>, + wrap_name_hash: HashMap> +} + +pub struct MetaMgr { + meta_classes: Vec>, +} + +impl MetaMgr { + + pub fn new() -> Self { + return MetaMgr::{ + meta_classes: Vec::new() + }; + } + + pub fn init(&mut self) { + + } + + pub fn un_init(&mut self) { + + } + + pub fn get_byid(&mut self, idx: i32, id: i64) -> Option<&Rc> { + return self.internal_get_byid(idx as usize, id); + } + + pub fn internal_get_byid(&mut self, idx: usize, id: i64) -> Option<&Rc> { + if idx >= 0 && idx <= self.meta_classes.len() { + match self.meta_classes[idx].wrap_id_hash.get(&id) { + Some(v) => { + return Some(v); + } + None => { + + } + } + } + return None; + } + +}