diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-02-22 13:18:15 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-02-22 13:18:15 +0100 |
| commit | ffd50b9cdfa38bc80f2444d917eef5a02c38c32f (patch) | |
| tree | 383a83ae49b7690a07d9b546e25b3b43a9adddbe /src/libstd | |
| parent | 72373438d28eecfa565ad16bd84f800b8c8067c0 (diff) | |
| download | rust-ffd50b9cdfa38bc80f2444d917eef5a02c38c32f.tar.gz rust-ffd50b9cdfa38bc80f2444d917eef5a02c38c32f.zip | |
Make the various from_str functions return options
So that they can be used with user input without causing task failures. Closes #1335
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/net.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libstd/net.rs b/src/libstd/net.rs index 68f8f29748a..2325598a2d3 100644 --- a/src/libstd/net.rs +++ b/src/libstd/net.rs @@ -49,10 +49,13 @@ Failure: String must be a valid IPv4 address */ fn parse_addr(ip: str) -> ip_addr { - let parts = vec::map(str::split_byte(ip, "."[0]), - {|s| uint::from_str(s) }); + let parts = vec::map(str::split_byte(ip, "."[0]), {|s| + alt uint::from_str(s) { + some(n) if n <= 255u { n } + _ { fail "Invalid IP Address part." } + } + }); if vec::len(parts) != 4u { fail "Too many dots in IP address"; } - for i in parts { if i > 255u { fail "Invalid IP Address part."; } } ipv4(parts[0] as u8, parts[1] as u8, parts[2] as u8, parts[3] as u8) } |
