Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. use std::collections::{HashMap};
  2. use std::path::PathBuf;
  3.  
  4. type Predicate = Fn(PathBuf, PathBuf) -> bool;
  5. type Callback = Fn(PathBuf, i32) -> ();
  6.  
  7. struct WatcherBuilder<'a> {
  8. callbacks: HashMap<&'static str, (&'a Predicate, &'a Callback)>,
  9. }
  10.  
  11. impl<'a> WatcherBuilder<'a> {
  12. fn new() -> WatcherBuilder<'a> {
  13. return WatcherBuilder {
  14. callbacks: HashMap::new(),
  15. };
  16. }
  17.  
  18. fn add_callback<P, C>(&mut self, predicate: &'a P, callback: &'a C) -> &mut Self
  19. where
  20. P: 'static + Fn(PathBuf, PathBuf) -> bool,
  21. C: 'static + Fn(PathBuf, i32) -> (),
  22. {
  23. self.callbacks.insert("a", (predicate, callback));
  24.  
  25. return self;
  26. }
  27. }
  28.  
  29. fn main() {
  30. let predicate = |path_1: PathBuf, path_2: PathBuf| path_1 == path_2;
  31. let callback = |path: PathBuf, diff: i32| println!("{} {}", 1, 2);
  32.  
  33. let mut watcher = WatcherBuilder::new()
  34. .add_callback(&predicate, &callback);
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement