Guest User

Untitled

a guest
Mar 24th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 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. let result = get_from_cache(id).or_else(|_| cache_result(get_from_db(id)?));
  33.  
  34. for element in result? {
  35. do_something(element)
  36. }
  37.  
  38. Ok(())
  39. }
  40.  
  41.  
  42. fn main() { run(123).unwrap() }
Add Comment
Please, Sign In to add comment