(&self, key: &str, create: F)
| 29 | } |
| 30 | |
| 31 | fn get_or_create<F, E>(&self, key: &str, create: F) -> Result<T, E> |
| 32 | where |
| 33 | F: FnOnce() -> Result<T, E>, |
| 34 | { |
| 35 | let mut guard = self.sessions.lock().unwrap(); |
| 36 | if let Some(value) = guard.get(key) { |
| 37 | return Ok(value.clone()); |
| 38 | } |
| 39 | let value = create()?; |
| 40 | guard.insert(key.to_owned(), value.clone()); |
| 41 | Ok(value) |
| 42 | } |
| 43 | |
| 44 | fn remove(&self, key: &str) { |
| 45 | self.sessions.lock().unwrap().remove(key); |
no test coverage detected