Guest User

Untitled

a guest
May 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. use std::borrow::Cow;
  2. use std::collections::HashMap;
  3.  
  4. #[derive(Clone, Debug)]
  5. struct Node {
  6. data: Vec<u8>,
  7. }
  8.  
  9. struct Db;
  10.  
  11. impl Db {
  12. fn get(&self, key: &str) -> Node {
  13. Node { data: key.as_bytes().to_vec() }
  14. }
  15. }
  16.  
  17. fn main() {
  18. let valid = "this-is-rust";
  19. let invalid = "something-else";
  20.  
  21. let db = Db;
  22. let mut cache = HashMap::new();
  23. cache.insert(valid.clone(), Node { data: vec![0; 2] });
  24.  
  25. {
  26. let key = valid;
  27. let node: Cow<Node> = match cache.get(key) {
  28. Some(node) => Cow::Borrowed(node),
  29. None => Cow::Owned(db.get(key)),
  30. };
  31. println!("Cached Data: {:?}", node);
  32. }
  33.  
  34. {
  35. let key = invalid;
  36. let node: Cow<Node> = match cache.get(key) {
  37. Some(node) => Cow::Borrowed(node),
  38. None => Cow::Owned(db.get(key)),
  39. };
  40. println!("Uncached Data: {:?}", node);
  41. }
  42. }
Add Comment
Please, Sign In to add comment