diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2013-05-08 23:50:15 +1000 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2013-05-08 23:50:15 +1000 |
| commit | ad5ee00c93043f08626efae8547587b640cf2630 (patch) | |
| tree | f7e68bf7fa33129ba5613064f2181e7d8e7fa437 /src/libstd | |
| parent | b6f9295654b8bcad0c3cdd0651741082cedd6e75 (diff) | |
| download | rust-ad5ee00c93043f08626efae8547587b640cf2630.tar.gz rust-ad5ee00c93043f08626efae8547587b640cf2630.zip | |
libstd: convert chained ifs to a match in base64.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/base64.rs | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/src/libstd/base64.rs b/src/libstd/base64.rs index b26296c9aca..85ba2707863 100644 --- a/src/libstd/base64.rs +++ b/src/libstd/base64.rs @@ -156,31 +156,27 @@ impl FromBase64 for ~[u8] { let ch = self[i] as char; n <<= 6u; - if ch >= 'A' && ch <= 'Z' { - n |= (ch as uint) - 0x41u; - } else if ch >= 'a' && ch <= 'z' { - n |= (ch as uint) - 0x47u; - } else if ch >= '0' && ch <= '9' { - n |= (ch as uint) + 0x04u; - } else if ch == '+' { - n |= 0x3Eu; - } else if ch == '/' { - n |= 0x3Fu; - } else if ch == '=' { - match len - i { - 1u => { - r.push(((n >> 16u) & 0xFFu) as u8); - r.push(((n >> 8u ) & 0xFFu) as u8); - return copy r; - } - 2u => { - r.push(((n >> 10u) & 0xFFu) as u8); - return copy r; - } - _ => fail!(~"invalid base64 padding") + match ch { + 'A'..'Z' => n |= (ch as uint) - 0x41, + 'a'..'z' => n |= (ch as uint) - 0x47, + '0'..'9' => n |= (ch as uint) + 0x04, + '+' => n |= 0x3E, + '/' => n |= 0x3F, + '=' => { + match len - i { + 1u => { + r.push(((n >> 16u) & 0xFFu) as u8); + r.push(((n >> 8u ) & 0xFFu) as u8); + return copy r; + } + 2u => { + r.push(((n >> 10u) & 0xFFu) as u8); + return copy r; + } + _ => fail!(~"invalid base64 padding") + } } - } else { - fail!(~"invalid base64 character"); + _ => fail!(~"invalid base64 character") } i += 1u; |
