Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::borrow::Cow;
- use std::collections::HashMap;
- #[derive(Clone, Debug)]
- struct Node {
- data: Vec<u8>,
- }
- struct Db;
- impl Db {
- fn get(&self, key: &str) -> Node {
- Node { data: key.as_bytes().to_vec() }
- }
- }
- fn main() {
- let valid = "this-is-rust";
- let invalid = "something-else";
- let db = Db;
- let mut cache = HashMap::new();
- cache.insert(valid.clone(), Node { data: vec![0; 2] });
- {
- let key = valid;
- let node: Cow<Node> = match cache.get(key) {
- Some(node) => Cow::Borrowed(node),
- None => Cow::Owned(db.get(key)),
- };
- println!("Cached Data: {:?}", node);
- }
- {
- let key = invalid;
- let node: Cow<Node> = match cache.get(key) {
- Some(node) => Cow::Borrowed(node),
- None => Cow::Owned(db.get(key)),
- };
- println!("Uncached Data: {:?}", node);
- }
- }
Add Comment
Please, Sign In to add comment