(&self, name: &str)
| 120 | } |
| 121 | |
| 122 | fn open_tree(&self, name: &str) -> StorageResult<Self::Tree> { |
| 123 | let mut trees = self.trees.write(); |
| 124 | |
| 125 | if let Some(tree) = trees.get(name) { |
| 126 | Ok(Box::new(MemoryTree { |
| 127 | data: tree.data.clone(), |
| 128 | }) as Box<dyn StorageTree>) |
| 129 | } else { |
| 130 | let tree = Arc::new(MemoryTree { |
| 131 | data: Arc::new(RwLock::new(HashMap::new())), |
| 132 | }); |
| 133 | trees.insert(name.to_string(), tree.clone()); |
| 134 | |
| 135 | Ok(Box::new(MemoryTree { |
| 136 | data: tree.data.clone(), |
| 137 | }) as Box<dyn StorageTree>) |
| 138 | } |
| 139 | } |
| 140 | |
| 141 | fn list_trees(&self) -> StorageResult<Vec<String>> { |
| 142 | Ok(self.trees.read().keys().cloned().collect()) |
no test coverage detected