diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-07-26 14:06:02 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-07-26 14:06:02 +0200 |
| commit | aea537779e01359cf8da6944218362d44bfaee83 (patch) | |
| tree | 235edf688d4fb4928ff766c063dcac779548f34d /src/lib/vec.rs | |
| parent | e123366bffa69ee3877335b9ca979b0cc301d07c (diff) | |
| download | rust-aea537779e01359cf8da6944218362d44bfaee83.tar.gz rust-aea537779e01359cf8da6944218362d44bfaee83.zip | |
Remove all uses of tuples from the compiler and stdlib
Diffstat (limited to 'src/lib/vec.rs')
| -rw-r--r-- | src/lib/vec.rs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/lib/vec.rs b/src/lib/vec.rs index 445ac8fe125..432098f970b 100644 --- a/src/lib/vec.rs +++ b/src/lib/vec.rs @@ -266,29 +266,29 @@ fn foldl[T, U](fn(&U, &T) -> U p, &U z, &vec[T] v) -> U { } } -fn unzip[T, U](&vec[tup(T, U)] v) -> tup(vec[T], vec[U]) { - auto sz = len[tup(T, U)](v); +fn unzip[T, U](&vec[rec(T _0, U _1)] v) -> rec(vec[T] _0, vec[U] _1) { + auto sz = len(v); if (sz == 0u) { - ret tup(alloc[T](0u), alloc[U](0u)); + ret rec(_0=alloc[T](0u), _1=alloc[U](0u)); } else { - auto rest = slice[tup(T, U)](v, 1u, sz); + auto rest = slice(v, 1u, sz); auto tl = unzip[T, U](rest); auto a = [v.(0)._0]; auto b = [v.(0)._1]; - ret tup(a + tl._0, b + tl._1); + ret rec(_0=a + tl._0, _1=b + tl._1); } } // FIXME make the lengths being equal a constraint -fn zip[T, U](&vec[T] v, &vec[U] u) -> vec[tup(T, U)] { - auto sz = len[T](v); - assert (sz == len[U](u)); +fn zip[T, U](&vec[T] v, &vec[U] u) -> vec[rec(T _0, U _1)] { + auto sz = len(v); + assert (sz == len(u)); if (sz == 0u) { - ret alloc[tup(T, U)](0u); + ret alloc(0u); } else { - auto rest = zip[T, U](slice[T](v, 1u, sz), slice[U](u, 1u, sz)); - vec::push(rest, tup(v.(0), u.(0))); + auto rest = zip(slice(v, 1u, sz), slice(u, 1u, sz)); + vec::push(rest, rec(_0=v.(0), _1=u.(0))); ret rest; } } |
