Guest User

Untitled

a guest
Mar 24th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. use std::io::Error;
  2.  
  3. #[derive(Debug, Clone)]
  4. struct DBInfo {
  5. field_one: i8,
  6. field_two: i8
  7. }
  8.  
  9. fn get_from_db(id: usize) -> Result<Vec<DBInfo>, Error> {
  10. // queries database
  11. Ok(vec![DBInfo{field_one: 1, field_two: 2}, DBInfo{field_one: 3, field_two: 4}])
  12. }
  13.  
  14. fn get_from_cache(id: usize) -> Result<Vec<DBInfo>, Error> {
  15. // requests from cache
  16. Ok(vec![DBInfo{field_one: 1, field_two: 2}, DBInfo{field_one: 3, field_two: 4}])
  17. }
  18.  
  19. fn cache_result(items: Vec<DBInfo>) -> Result<Vec<DBInfo>, Error> {
  20. // uses items here and returns it after
  21. Ok(items)
  22. }
  23.  
  24. fn do_something(info: DBInfo){
  25. println!("DBInfo element: {:?}", info);
  26. }
  27.  
  28. fn run(id: usize) -> Result<(), Error> {
  29. // Step 1: Try to get a Vec<DBInfo> (serialized json) from cache
  30. // Step 2: If cache returns Err, I have to query the db instead
  31. // Step 3: Iterate over the Vec<DBInfo> and do_something with each element
  32. get_from_cache(id).or_else(|_| cache_result(get_from_db(id)?))
  33. .for_each(|element| do_something(element));
  34.  
  35.  
  36. Ok(())
  37. }
  38.  
  39.  
  40. fn main() { run(123).unwrap() }
Add Comment
Please, Sign In to add comment