Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::io::Error;
- #[derive(Debug, Clone)]
- struct DBInfo {
- field_one: i8,
- field_two: i8
- }
- fn get_from_db(id: usize) -> Result<Vec<DBInfo>, Error> {
- // queries database
- Ok(vec![DBInfo{field_one: 1, field_two: 2}, DBInfo{field_one: 3, field_two: 4}])
- }
- fn get_from_cache(id: usize) -> Result<Vec<DBInfo>, Error> {
- // requests from cache
- Ok(vec![DBInfo{field_one: 1, field_two: 2}, DBInfo{field_one: 3, field_two: 4}])
- }
- fn cache_result(items: Vec<DBInfo>) -> Result<Vec<DBInfo>, Error> {
- // uses items here and returns it after
- Ok(items)
- }
- fn do_something(info: DBInfo){
- println!("DBInfo element: {:?}", info);
- }
- fn run(id: usize) -> Result<(), Error> {
- // Step 1: Try to get a Vec<DBInfo> (serialized json) from cache
- // Step 2: If cache returns Err, I have to query the db instead
- // Step 3: Iterate over the Vec<DBInfo> and do_something with each element
- let result = get_from_cache(id).or_else(|_| cache_result(get_from_db(id)?));
- for element in result? {
- do_something(element)
- }
- Ok(())
- }
- fn main() { run(123).unwrap() }
Add Comment
Please, Sign In to add comment