Skip to content

Commit 7fc8807

Browse files
committed
Updated std::Either and std::Result
Made naming schemes consistent between Option, Result and Either Changed Options Add implementation to work like the maybe monad (return None if any of the inputs is None) Renamed Option::unwrap to Option::get and Option::take_unwrap to Option::take_get
1 parent b5d77d2 commit 7fc8807

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+991
-1017
lines changed

doc/tutorial-tasks.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ fn pnorm(nums: &~[float], p: uint) -> float {
355355
356356
fn main() {
357357
let numbers = vec::from_fn(1000000, |_| rand::random::<float>());
358-
println(fmt!("Inf-norm = %?", *numbers.iter().max().unwrap()));
358+
println(fmt!("Inf-norm = %?", *numbers.iter().max().get()));
359359
360360
let numbers_arc = Arc::new(numbers);
361361

src/compiletest/errors.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub struct ExpectedError { line: uint, kind: ~str, msg: ~str }
1515
// Load any test directives embedded in the file
1616
pub fn load_errors(testfile: &Path) -> ~[ExpectedError] {
1717
let mut error_patterns = ~[];
18-
let rdr = io::file_reader(testfile).unwrap();
18+
let rdr = io::file_reader(testfile).get();
1919
let mut line_num = 1u;
2020
while !rdr.eof() {
2121
let ln = rdr.read_line();

src/compiletest/header.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ pub fn is_test_ignored(config: &config, testfile: &Path) -> bool {
105105
}
106106

107107
fn iter_header(testfile: &Path, it: &fn(~str) -> bool) -> bool {
108-
let rdr = io::file_reader(testfile).unwrap();
108+
let rdr = io::file_reader(testfile).get();
109109
while !rdr.eof() {
110110
let ln = rdr.read_line();
111111

src/compiletest/runtest.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ fn dump_output_file(config: &config, testfile: &Path,
696696
out: &str, extension: &str) {
697697
let outfile = make_out_name(config, testfile, extension);
698698
let writer =
699-
io::file_writer(&outfile, [io::Create, io::Truncate]).unwrap();
699+
io::file_writer(&outfile, [io::Create, io::Truncate]).get();
700700
writer.write_str(out);
701701
}
702702

src/libextra/dlist.rs

+14-14
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ impl<T> DList<T> {
340340
if take_a {
341341
it.next();
342342
} else {
343-
it.insert_next_node(other.pop_front_node().unwrap());
343+
it.insert_next_node(other.pop_front_node().get());
344344
}
345345
}
346346
}
@@ -499,7 +499,7 @@ impl<'self, A> MutDListIterator<'self, A> {
499499
None => return self.list.push_front_node(ins_node),
500500
Some(prev) => prev,
501501
};
502-
let node_own = prev_node.next.take_unwrap();
502+
let node_own = prev_node.next.take_get();
503503
ins_node.next = link_with_prev(node_own, Rawlink::some(ins_node));
504504
prev_node.next = link_with_prev(ins_node, Rawlink::some(prev_node));
505505
self.list.length += 1;
@@ -634,14 +634,14 @@ mod tests {
634634
n.push_front(2);
635635
n.push_front(3);
636636
{
637-
assert_eq!(n.front().unwrap(), &3);
638-
let x = n.front_mut().unwrap();
637+
assert_eq!(n.front().get(), &3);
638+
let x = n.front_mut().get();
639639
assert_eq!(*x, 3);
640640
*x = 0;
641641
}
642642
{
643-
assert_eq!(n.back().unwrap(), &2);
644-
let y = n.back_mut().unwrap();
643+
assert_eq!(n.back().get(), &2);
644+
let y = n.back_mut().get();
645645
assert_eq!(*y, 2);
646646
*y = 1;
647647
}
@@ -750,7 +750,7 @@ mod tests {
750750
n.push_front(4);
751751
let mut it = n.iter();
752752
assert_eq!(it.size_hint(), (1, Some(1)));
753-
assert_eq!(it.next().unwrap(), &4);
753+
assert_eq!(it.next().get(), &4);
754754
assert_eq!(it.size_hint(), (0, Some(0)));
755755
assert_eq!(it.next(), None);
756756
}
@@ -778,11 +778,11 @@ mod tests {
778778
n.push_front(6);
779779
let mut it = n.iter();
780780
assert_eq!(it.size_hint(), (3, Some(3)));
781-
assert_eq!(it.next().unwrap(), &6);
781+
assert_eq!(it.next().get(), &6);
782782
assert_eq!(it.size_hint(), (2, Some(2)));
783-
assert_eq!(it.next_back().unwrap(), &4);
783+
assert_eq!(it.next_back().get(), &4);
784784
assert_eq!(it.size_hint(), (1, Some(1)));
785-
assert_eq!(it.next_back().unwrap(), &5);
785+
assert_eq!(it.next_back().get(), &5);
786786
assert_eq!(it.next_back(), None);
787787
assert_eq!(it.next(), None);
788788
}
@@ -798,7 +798,7 @@ mod tests {
798798
n.push_front(4);
799799
let mut it = n.rev_iter();
800800
assert_eq!(it.size_hint(), (1, Some(1)));
801-
assert_eq!(it.next().unwrap(), &4);
801+
assert_eq!(it.next().get(), &4);
802802
assert_eq!(it.size_hint(), (0, Some(0)));
803803
assert_eq!(it.next(), None);
804804
}
@@ -833,11 +833,11 @@ mod tests {
833833
n.push_front(6);
834834
let mut it = n.mut_iter();
835835
assert_eq!(it.size_hint(), (3, Some(3)));
836-
assert_eq!(*it.next().unwrap(), 6);
836+
assert_eq!(*it.next().get(), 6);
837837
assert_eq!(it.size_hint(), (2, Some(2)));
838-
assert_eq!(*it.next_back().unwrap(), 4);
838+
assert_eq!(*it.next_back().get(), 4);
839839
assert_eq!(it.size_hint(), (1, Some(1)));
840-
assert_eq!(*it.next_back().unwrap(), 5);
840+
assert_eq!(*it.next_back().get(), 5);
841841
assert!(it.next_back().is_none());
842842
assert!(it.next().is_none());
843843
}

src/libextra/fileinput.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ impl FileInput {
224224
let path_option = self.fi.files.shift();
225225
let file = match path_option {
226226
None => io::stdin(),
227-
Some(ref path) => io::file_reader(path).unwrap()
227+
Some(ref path) => io::file_reader(path).get()
228228
};
229229

230230
self.fi.current_reader = Some(file);
@@ -417,7 +417,7 @@ mod test {
417417
use std::vec;
418418

419419
fn make_file(path : &Path, contents: &[~str]) {
420-
let file = io::file_writer(path, [io::Create, io::Truncate]).unwrap();
420+
let file = io::file_writer(path, [io::Create, io::Truncate]).get();
421421

422422
foreach str in contents.iter() {
423423
file.write_str(*str);
@@ -565,11 +565,9 @@ mod test {
565565
let f2 =
566566
Some(Path("tmp/lib-fileinput-test-no-trailing-newline-2.tmp"));
567567
568-
let wr = io::file_writer(f1.get_ref(),
569-
[io::Create, io::Truncate]).unwrap();
568+
let wr = io::file_writer(f1.get_ref(), [io::Create, io::Truncate]).get();
570569
wr.write_str("1\n2");
571-
let wr = io::file_writer(f2.get_ref(),
572-
[io::Create, io::Truncate]).unwrap();
570+
let wr = io::file_writer(f2.get_ref(), [io::Create, io::Truncate]).get();
573571
wr.write_str("3\n4");
574572
575573
let mut lines = ~[];

src/libextra/getopts.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ fn find_opt(opts: &[Opt], nm: Name) -> Option<uint> {
196196
* The type returned when the command line does not conform to the
197197
* expected format. Pass this value to <fail_str> to get an error message.
198198
*/
199-
#[deriving(Clone, Eq)]
199+
#[deriving(Clone, Eq, ToStr)]
200200
pub enum Fail_ {
201201
ArgumentMissing(~str),
202202
UnrecognizedOption(~str),

src/libextra/json.rs

+39-39
Original file line numberDiff line numberDiff line change
@@ -1511,8 +1511,8 @@ mod tests {
15111511
15121512
// We can't compare the strings directly because the object fields be
15131513
// printed in a different order.
1514-
assert_eq!(a.clone(), from_str(to_str(&a)).unwrap());
1515-
assert_eq!(a.clone(), from_str(to_pretty_str(&a)).unwrap());
1514+
assert_eq!(a.clone(), from_str(to_str(&a)).get());
1515+
assert_eq!(a.clone(), from_str(to_pretty_str(&a)).get());
15161516
}
15171517
15181518
#[test]
@@ -1631,15 +1631,15 @@ mod tests {
16311631
16321632
#[test]
16331633
fn test_decode_identifiers() {
1634-
let mut decoder = Decoder(from_str("null").unwrap());
1634+
let mut decoder = Decoder(from_str("null").get());
16351635
let v: () = Decodable::decode(&mut decoder);
16361636
assert_eq!(v, ());
16371637
1638-
let mut decoder = Decoder(from_str("true").unwrap());
1638+
let mut decoder = Decoder(from_str("true").get());
16391639
let v: bool = Decodable::decode(&mut decoder);
16401640
assert_eq!(v, true);
16411641
1642-
let mut decoder = Decoder(from_str("false").unwrap());
1642+
let mut decoder = Decoder(from_str("false").get());
16431643
let v: bool = Decodable::decode(&mut decoder);
16441644
assert_eq!(v, false);
16451645
}
@@ -1674,31 +1674,31 @@ mod tests {
16741674
16751675
#[test]
16761676
fn test_decode_numbers() {
1677-
let mut decoder = Decoder(from_str("3").unwrap());
1677+
let mut decoder = Decoder(from_str("3").get());
16781678
let v: float = Decodable::decode(&mut decoder);
16791679
assert_eq!(v, 3f);
16801680
1681-
let mut decoder = Decoder(from_str("3.1").unwrap());
1681+
let mut decoder = Decoder(from_str("3.1").get());
16821682
let v: float = Decodable::decode(&mut decoder);
16831683
assert_eq!(v, 3.1f);
16841684
1685-
let mut decoder = Decoder(from_str("-1.2").unwrap());
1685+
let mut decoder = Decoder(from_str("-1.2").get());
16861686
let v: float = Decodable::decode(&mut decoder);
16871687
assert_eq!(v, -1.2f);
16881688
1689-
let mut decoder = Decoder(from_str("0.4").unwrap());
1689+
let mut decoder = Decoder(from_str("0.4").get());
16901690
let v: float = Decodable::decode(&mut decoder);
16911691
assert_eq!(v, 0.4f);
16921692
1693-
let mut decoder = Decoder(from_str("0.4e5").unwrap());
1693+
let mut decoder = Decoder(from_str("0.4e5").get());
16941694
let v: float = Decodable::decode(&mut decoder);
16951695
assert_eq!(v, 0.4e5f);
16961696
1697-
let mut decoder = Decoder(from_str("0.4e15").unwrap());
1697+
let mut decoder = Decoder(from_str("0.4e15").get());
16981698
let v: float = Decodable::decode(&mut decoder);
16991699
assert_eq!(v, 0.4e15f);
17001700
1701-
let mut decoder = Decoder(from_str("0.4e-01").unwrap());
1701+
let mut decoder = Decoder(from_str("0.4e-01").get());
17021702
let v: float = Decodable::decode(&mut decoder);
17031703
assert_eq!(v, 0.4e-01f);
17041704
}
@@ -1726,39 +1726,39 @@ mod tests {
17261726

17271727
#[test]
17281728
fn test_decode_str() {
1729-
let mut decoder = Decoder(from_str("\"\"").unwrap());
1729+
let mut decoder = Decoder(from_str("\"\"").get());
17301730
let v: ~str = Decodable::decode(&mut decoder);
17311731
assert_eq!(v, ~"");
17321732

1733-
let mut decoder = Decoder(from_str("\"foo\"").unwrap());
1733+
let mut decoder = Decoder(from_str("\"foo\"").get());
17341734
let v: ~str = Decodable::decode(&mut decoder);
17351735
assert_eq!(v, ~"foo");
17361736
1737-
let mut decoder = Decoder(from_str("\"\\\"\"").unwrap());
1737+
let mut decoder = Decoder(from_str("\"\\\"\"").get());
17381738
let v: ~str = Decodable::decode(&mut decoder);
17391739
assert_eq!(v, ~"\"");
17401740

1741-
let mut decoder = Decoder(from_str("\"\\b\"").unwrap());
1741+
let mut decoder = Decoder(from_str("\"\\b\"").get());
17421742
let v: ~str = Decodable::decode(&mut decoder);
17431743
assert_eq!(v, ~"\x08");
17441744

1745-
let mut decoder = Decoder(from_str("\"\\n\"").unwrap());
1745+
let mut decoder = Decoder(from_str("\"\\n\"").get());
17461746
let v: ~str = Decodable::decode(&mut decoder);
17471747
assert_eq!(v, ~"\n");
17481748

1749-
let mut decoder = Decoder(from_str("\"\\r\"").unwrap());
1749+
let mut decoder = Decoder(from_str("\"\\r\"").get());
17501750
let v: ~str = Decodable::decode(&mut decoder);
17511751
assert_eq!(v, ~"\r");
17521752

1753-
let mut decoder = Decoder(from_str("\"\\t\"").unwrap());
1753+
let mut decoder = Decoder(from_str("\"\\t\"").get());
17541754
let v: ~str = Decodable::decode(&mut decoder);
17551755
assert_eq!(v, ~"\t");
17561756

1757-
let mut decoder = Decoder(from_str("\"\\u12ab\"").unwrap());
1757+
let mut decoder = Decoder(from_str("\"\\u12ab\"").get());
17581758
let v: ~str = Decodable::decode(&mut decoder);
17591759
assert_eq!(v, ~"\u12ab");
17601760

1761-
let mut decoder = Decoder(from_str("\"\\uAB12\"").unwrap());
1761+
let mut decoder = Decoder(from_str("\"\\uAB12\"").get());
17621762
let v: ~str = Decodable::decode(&mut decoder);
17631763
assert_eq!(v, ~"\uAB12");
17641764
}
@@ -1791,27 +1791,27 @@ mod tests {
17911791

17921792
#[test]
17931793
fn test_decode_list() {
1794-
let mut decoder = Decoder(from_str("[]").unwrap());
1794+
let mut decoder = Decoder(from_str("[]").get());
17951795
let v: ~[()] = Decodable::decode(&mut decoder);
17961796
assert_eq!(v, ~[]);
17971797

1798-
let mut decoder = Decoder(from_str("[null]").unwrap());
1798+
let mut decoder = Decoder(from_str("[null]").get());
17991799
let v: ~[()] = Decodable::decode(&mut decoder);
18001800
assert_eq!(v, ~[()]);
18011801

1802-
let mut decoder = Decoder(from_str("[true]").unwrap());
1802+
let mut decoder = Decoder(from_str("[true]").get());
18031803
let v: ~[bool] = Decodable::decode(&mut decoder);
18041804
assert_eq!(v, ~[true]);
18051805

1806-
let mut decoder = Decoder(from_str("[true]").unwrap());
1806+
let mut decoder = Decoder(from_str("[true]").get());
18071807
let v: ~[bool] = Decodable::decode(&mut decoder);
18081808
assert_eq!(v, ~[true]);
18091809

1810-
let mut decoder = Decoder(from_str("[3, 1]").unwrap());
1810+
let mut decoder = Decoder(from_str("[3, 1]").get());
18111811
let v: ~[int] = Decodable::decode(&mut decoder);
18121812
assert_eq!(v, ~[3, 1]);
18131813

1814-
let mut decoder = Decoder(from_str("[[3], [1, 2]]").unwrap());
1814+
let mut decoder = Decoder(from_str("[[3], [1, 2]]").get());
18151815
let v: ~[~[uint]] = Decodable::decode(&mut decoder);
18161816
assert_eq!(v, ~[~[3], ~[1, 2]]);
18171817
}
@@ -1866,21 +1866,21 @@ mod tests {
18661866
col: 8u,
18671867
msg: @~"EOF while parsing object"}));
18681868
1869-
assert_eq!(from_str("{}").unwrap(), mk_object([]));
1870-
assert_eq!(from_str("{\"a\": 3}").unwrap(),
1869+
assert_eq!(from_str("{}").get(), mk_object([]));
1870+
assert_eq!(from_str("{\"a\": 3}").get(),
18711871
mk_object([(~"a", Number(3.0f))]));
18721872
18731873
assert_eq!(from_str(
1874-
"{ \"a\": null, \"b\" : true }").unwrap(),
1874+
"{ \"a\": null, \"b\" : true }").get(),
18751875
mk_object([
18761876
(~"a", Null),
18771877
(~"b", Boolean(true))]));
1878-
assert_eq!(from_str("\n{ \"a\": null, \"b\" : true }\n").unwrap(),
1878+
assert_eq!(from_str("\n{ \"a\": null, \"b\" : true }\n").get(),
18791879
mk_object([
18801880
(~"a", Null),
18811881
(~"b", Boolean(true))]));
18821882
assert_eq!(from_str(
1883-
"{\"a\" : 1.0 ,\"b\": [ true ]}").unwrap(),
1883+
"{\"a\" : 1.0 ,\"b\": [ true ]}").get(),
18841884
mk_object([
18851885
(~"a", Number(1.0)),
18861886
(~"b", List(~[Boolean(true)]))
@@ -1893,7 +1893,7 @@ mod tests {
18931893
"\"foo\\nbar\", " +
18941894
"{ \"c\": {\"d\": null} } " +
18951895
"]" +
1896-
"}").unwrap(),
1896+
"}").get(),
18971897
mk_object([
18981898
(~"a", Number(1.0f)),
18991899
(~"b", List(~[
@@ -1913,7 +1913,7 @@ mod tests {
19131913
{ \"a\": null, \"b\": 2, \"c\": [\"abc\", \"xyz\"] }
19141914
]
19151915
}";
1916-
let mut decoder = Decoder(from_str(s).unwrap());
1916+
let mut decoder = Decoder(from_str(s).get());
19171917
let v: Outer = Decodable::decode(&mut decoder);
19181918
assert_eq!(
19191919
v,
@@ -1927,31 +1927,31 @@ mod tests {
19271927
19281928
#[test]
19291929
fn test_decode_option() {
1930-
let mut decoder = Decoder(from_str("null").unwrap());
1930+
let mut decoder = Decoder(from_str("null").get());
19311931
let value: Option<~str> = Decodable::decode(&mut decoder);
19321932
assert_eq!(value, None);
19331933
1934-
let mut decoder = Decoder(from_str("\"jodhpurs\"").unwrap());
1934+
let mut decoder = Decoder(from_str("\"jodhpurs\"").get());
19351935
let value: Option<~str> = Decodable::decode(&mut decoder);
19361936
assert_eq!(value, Some(~"jodhpurs"));
19371937
}
19381938
19391939
#[test]
19401940
fn test_decode_enum() {
1941-
let mut decoder = Decoder(from_str("\"Dog\"").unwrap());
1941+
let mut decoder = Decoder(from_str("\"Dog\"").get());
19421942
let value: Animal = Decodable::decode(&mut decoder);
19431943
assert_eq!(value, Dog);
19441944

19451945
let mut decoder =
1946-
Decoder(from_str("[\"Frog\",\"Henry\",349]").unwrap());
1946+
Decoder(from_str("[\"Frog\",\"Henry\",349]").get());
19471947
let value: Animal = Decodable::decode(&mut decoder);
19481948
assert_eq!(value, Frog(~"Henry", 349));
19491949
}
19501950
19511951
#[test]
19521952
fn test_decode_map() {
19531953
let s = ~"{\"a\": \"Dog\", \"b\": [\"Frog\", \"Henry\", 349]}";
1954-
let mut decoder = Decoder(from_str(s).unwrap());
1954+
let mut decoder = Decoder(from_str(s).get());
19551955
let mut map: TreeMap<~str, Animal> = Decodable::decode(&mut decoder);
19561956
19571957
assert_eq!(map.pop(&~"a"), Some(Dog));

0 commit comments

Comments
 (0)