diff --git a/src/libcore/core.rc b/src/libcore/core.rc index d97992da61848..9fdba5c469b02 100644 --- a/src/libcore/core.rc +++ b/src/libcore/core.rc @@ -13,6 +13,7 @@ export either, option, result; export ctypes, sys, unsafe, comm, task, logging; export extfmt; export math; +export tuple; // Built-in-type support modules @@ -41,6 +42,7 @@ mod unicode; mod either; mod option; mod result; +mod tuple; // Runtime and language-primitive support diff --git a/src/libcore/tuple.rs b/src/libcore/tuple.rs new file mode 100644 index 0000000000000..9d24f428d42e4 --- /dev/null +++ b/src/libcore/tuple.rs @@ -0,0 +1,28 @@ +/* +Module: tuple +*/ + +// FIXME #1546: Would rather write fst(+pair: (T, U)) -> T +fn first(pair: (T, U)) -> T { + let (t, _) = pair; + ret t; +} + +fn second(pair: (T, U)) -> U { + let (_, u) = pair; + ret u; +} + +fn swap(pair: (T, U)) -> (U, T) { + let (t, u) = pair; + ret (u, t); +} + + +#[test] +fn test_tuple() { + assert first((948, 4039.48)) == 948; + assert second((34.5, "foo")) == "foo"; + assert swap(('a', 2)) == (2, 'a'); +} + diff --git a/src/rustdoc/attr_parser.rs b/src/rustdoc/attr_parser.rs index 39c569347f4d5..10e4a8af2fe1a 100644 --- a/src/rustdoc/attr_parser.rs +++ b/src/rustdoc/attr_parser.rs @@ -1,5 +1,6 @@ import rustc::syntax::ast; import rustc::front::attr; +import core::tuple; export fn_attrs, arg_attrs; export parse_fn; @@ -83,8 +84,8 @@ fn parse_fn_( vec::filter_map(items) {|item| option::map(attr::name_value_str_pair(item)) { |pair| { - name: util::fst(pair), - desc: util::snd(pair) + name: tuple::first(pair), + desc: tuple::second(pair) } } } @@ -172,4 +173,4 @@ mod tests { assert attrs.args[0] == {name: "a", desc: "arg a"}; assert attrs.args[1] == {name: "b", desc: "arg b"}; } -} \ No newline at end of file +} diff --git a/src/rustdoc/util.rs b/src/rustdoc/util.rs index 7277e2ce23a66..e69de29bb2d1d 100644 --- a/src/rustdoc/util.rs +++ b/src/rustdoc/util.rs @@ -1,10 +0,0 @@ -// FIXME #1546: Would rather write fst(+pair: (T, U)) -> T -fn fst(pair: (T, U)) -> T { - let (t, _) = pair; - ret t; -} - -fn snd(pair: (T, U)) -> U { - let (_, u) = pair; - ret u; -}