Advertisement
Guest User

Untitled

a guest
May 31st, 2022
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.00 KB | None | 0 0
  1. fn main() {
  2.  
  3.     let preloaded = RefCell::new(Cache::new(|x| {
  4.         println!(" -> preload({})", x);
  5.  
  6.         format!("{} - preloaded", x)
  7.         }));
  8.  
  9.     let parsed = RefCell::new(Cache::new( |x| {
  10.         let mut preloaded = preloaded.borrow_mut();
  11.         let xp = preloaded.get(x);
  12.  
  13.         println!("  -> parsed({})", x);
  14.  
  15.         format!("{} - parsed", xp)
  16.     }));
  17.  
  18.     let processed = RefCell::new(Cache::new(|x| {
  19.         let mut parsed = parsed.borrow_mut();
  20.         let xp = parsed.get(x);
  21.  
  22.         println!("    -> process({})", x);
  23.  
  24.         format!("{} - processed", xp)
  25.     }));
  26.  
  27.     println!("{}", preloaded.borrow_mut().get("A"));
  28.     println!("{}", processed.borrow_mut().get("B"));
  29.     println!("{}", preloaded.borrow_mut().get("A"));
  30.     println!("{}", parsed.borrow_mut().get("B"));
  31.  
  32. }
  33.  
  34. /* Run results:
  35.  -> preload(A)
  36. A - preloaded
  37.  -> preload(B)
  38.   -> parsed(B)
  39.     -> process(B)
  40. B - preloaded - parsed - processed
  41. A - preloaded
  42. B - preloaded - parsed
  43. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement