diff options
| author | acdenisSK <[email protected]> | 2017-09-17 17:54:08 +0200 |
|---|---|---|
| committer | acdenisSK <[email protected]> | 2017-09-17 17:54:08 +0200 |
| commit | f008cb01b89163c853860f39ea6288fdc749051a (patch) | |
| tree | c2a30dd7def36ffec98d05967fad2fd838957eb6 /src | |
| parent | if let -> and_then/map (diff) | |
| download | serenity-f008cb01b89163c853860f39ea6288fdc749051a.tar.xz serenity-f008cb01b89163c853860f39ea6288fdc749051a.zip | |
Use combinators in `parse_header`
Diffstat (limited to 'src')
| -rw-r--r-- | src/http/ratelimiting.rs | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/http/ratelimiting.rs b/src/http/ratelimiting.rs index 039f15d..c401b53 100644 --- a/src/http/ratelimiting.rs +++ b/src/http/ratelimiting.rs @@ -504,18 +504,11 @@ impl RateLimit { } fn parse_header(headers: &Headers, header: &str) -> Result<Option<i64>> { - match headers.get_raw(header) { - Some(header) => { - match str::from_utf8(&header[0]) { - Ok(v) => { - match v.parse::<i64>() { - Ok(v) => Ok(Some(v)), - Err(_) => Err(Error::Http(HttpError::RateLimitI64)), - } - }, - Err(_) => Err(Error::Http(HttpError::RateLimitUtf8)), - } - }, - None => Ok(None), - } + headers.get_raw(header).map_or(Ok(None), |header| { + str::from_utf8(&header[0]) + .map_err(|_| Error::Http(HttpError::RateLimitUtf8)) + .and_then(|v| { + v.parse::<i64>().map(|v| Some(v)).map_err(|_| Error::Http(HttpError::RateLimitI64)) + }) + }) } |