diff options
| author | Daniel <kingdread@gmx.de> | 2018-09-10 00:45:53 +0200 | 
|---|---|---|
| committer | Daniel <kingdread@gmx.de> | 2018-09-10 00:45:53 +0200 | 
| commit | e16d9873db70d29d409ae989c9b18f28f1652434 (patch) | |
| tree | 6a9200d96e99fb355e7a3fd7c4bd0ee8cbee60ed /src | |
| parent | 2c1203f6f2c3e6bbaf527fa202425ed465e89d69 (diff) | |
| download | raidgrep-e16d9873db70d29d409ae989c9b18f28f1652434.tar.gz raidgrep-e16d9873db70d29d409ae989c9b18f28f1652434.tar.bz2 raidgrep-e16d9873db70d29d409ae989c9b18f28f1652434.zip | |
use unwrap! instead of if let
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 41 | 
1 files changed, 23 insertions, 18 deletions
| diff --git a/src/main.rs b/src/main.rs index 2e3007c..85018c8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,6 +29,16 @@ mod output;  mod filters; +macro_rules! unwrap { +    ($p:pat = $e:expr => { $r:expr} ) => { +        if let $p = $e { +            $r +        } else { +            panic!("Pattern match failed!"); +        } +    }; +} +  /// A program that allows you to search through all your evtc logs for specific  /// people.  #[derive(StructOpt, Debug)] @@ -230,25 +240,20 @@ fn extract_info(entry: &DirEntry, log: &Log) -> LogResult {      let mut players = log          .players()          .map(|p| { -            if let AgentKind::Player { profession, elite } = p.kind() { -                if let AgentName::Player { -                    account_name, -                    character_name, -                    subgroup, -                } = p.name() -                { -                    Player { -                        account_name: account_name.clone(), -                        character_name: character_name.clone(), -                        profession: get_profession_name(*profession, *elite).into(), -                        subgroup: *subgroup, -                    } -                } else { -                    unreachable!() +            unwrap! { AgentKind::Player { profession, elite } = p.kind() => { +            unwrap! { AgentName::Player { +                account_name, +                character_name, +                subgroup, +            } = p.name() => +            { +                Player { +                    account_name: account_name.clone(), +                    character_name: character_name.clone(), +                    profession: get_profession_name(*profession, *elite).into(), +                    subgroup: *subgroup,                  } -            } else { -                unreachable!() -            } +            }}}}          }).collect::<Vec<Player>>();      players.sort_by_key(|p| p.subgroup); | 
