Rename slice::unzip() to vec::unzip()
unzip() has nothing to do with slices, so it belongs in vec.
This commit is contained in:
parent
21dae8e1e0
commit
3296bd7e46
@ -33,7 +33,7 @@ use middle::ty;
|
||||
use util::ppaux::{Repr, ty_to_str};
|
||||
|
||||
use std::c_str::ToCStr;
|
||||
use std::slice;
|
||||
use std::{slice, vec};
|
||||
use std::vec::Vec;
|
||||
use libc::c_uint;
|
||||
use syntax::{ast, ast_util};
|
||||
@ -94,7 +94,7 @@ fn const_vec(cx: &CrateContext, e: &ast::Expr,
|
||||
let vec_ty = ty::expr_ty(cx.tcx(), e);
|
||||
let unit_ty = ty::sequence_element_type(cx.tcx(), vec_ty);
|
||||
let llunitty = type_of::type_of(cx, unit_ty);
|
||||
let (vs, inlineable) = slice::unzip(es.iter().map(|e| const_expr(cx, *e, is_local)));
|
||||
let (vs, inlineable) = vec::unzip(es.iter().map(|e| const_expr(cx, *e, is_local)));
|
||||
// If the vector contains enums, an LLVM array won't work.
|
||||
let v = if vs.iter().any(|vi| val_ty(*vi) != llunitty) {
|
||||
C_struct(cx, vs, false)
|
||||
@ -539,7 +539,7 @@ fn const_expr_unadjusted(cx: &CrateContext, e: &ast::Expr,
|
||||
};
|
||||
|
||||
expr::with_field_tys(tcx, ety, Some(e.id), |discr, field_tys| {
|
||||
let (cs, inlineable) = slice::unzip(field_tys.iter().enumerate()
|
||||
let (cs, inlineable) = vec::unzip(field_tys.iter().enumerate()
|
||||
.map(|(ix, &field_ty)| {
|
||||
match fs.iter().find(|f| field_ty.ident.name == f.ident.node.name) {
|
||||
Some(f) => const_expr(cx, (*f).expr, is_local),
|
||||
|
@ -155,25 +155,6 @@ impl<'a, T: Clone, V: Vector<T>> VectorVector<T> for &'a [V] {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an iterator of pairs into a pair of vectors.
|
||||
*
|
||||
* Returns a tuple containing two vectors where the i-th element of the first
|
||||
* vector contains the first element of the i-th tuple of the input iterator,
|
||||
* and the i-th element of the second vector contains the second element
|
||||
* of the i-th tuple of the input iterator.
|
||||
*/
|
||||
pub fn unzip<T, U, V: Iterator<(T, U)>>(mut iter: V) -> (~[T], ~[U]) {
|
||||
let (lo, _) = iter.size_hint();
|
||||
let mut ts = Vec::with_capacity(lo);
|
||||
let mut us = Vec::with_capacity(lo);
|
||||
for (t, u) in iter {
|
||||
ts.push(t);
|
||||
us.push(u);
|
||||
}
|
||||
(ts.move_iter().collect(), us.move_iter().collect())
|
||||
}
|
||||
|
||||
/// An Iterator that yields the element swaps needed to produce
|
||||
/// a sequence of all possible permutations for an indexed sequence of
|
||||
/// elements. Each permutation is only a single swap apart.
|
||||
@ -1242,18 +1223,6 @@ mod tests {
|
||||
assert_eq!(v, vec![1, 3, 5]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_zip_unzip() {
|
||||
let z1 = vec![(1, 4), (2, 5), (3, 6)];
|
||||
|
||||
let (left, right) = unzip(z1.iter().map(|&x| x));
|
||||
|
||||
let (left, right) = (left.as_slice(), right.as_slice());
|
||||
assert_eq!((1, 4), (left[0], right[0]));
|
||||
assert_eq!((2, 5), (left[1], right[1]));
|
||||
assert_eq!((3, 6), (left[2], right[2]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_element_swaps() {
|
||||
let mut v = [1, 2, 3];
|
||||
|
@ -407,7 +407,7 @@ mod tests {
|
||||
use rand::Rng;
|
||||
use sync::atomics::{AtomicBool, INIT_ATOMIC_BOOL, SeqCst,
|
||||
AtomicUint, INIT_ATOMIC_UINT};
|
||||
use slice;
|
||||
use vec;
|
||||
|
||||
#[test]
|
||||
fn smoke() {
|
||||
@ -603,7 +603,7 @@ mod tests {
|
||||
let mut pool = BufferPool::<(int, uint)>::new();
|
||||
let (mut w, s) = pool.deque();
|
||||
|
||||
let (threads, hits) = slice::unzip(range(0, NTHREADS).map(|_| {
|
||||
let (threads, hits) = vec::unzip(range(0, NTHREADS).map(|_| {
|
||||
let s = s.clone();
|
||||
let unique_box = box AtomicUint::new(0);
|
||||
let thread_box = unsafe {
|
||||
|
@ -1436,10 +1436,31 @@ impl<T> Drop for MoveItems<T> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an iterator of pairs into a pair of vectors.
|
||||
*
|
||||
* Returns a tuple containing two vectors where the i-th element of the first
|
||||
* vector contains the first element of the i-th tuple of the input iterator,
|
||||
* and the i-th element of the second vector contains the second element
|
||||
* of the i-th tuple of the input iterator.
|
||||
*/
|
||||
pub fn unzip<T, U, V: Iterator<(T, U)>>(mut iter: V) -> (Vec<T>, Vec<U>) {
|
||||
let (lo, _) = iter.size_hint();
|
||||
let mut ts = Vec::with_capacity(lo);
|
||||
let mut us = Vec::with_capacity(lo);
|
||||
for (t, u) in iter {
|
||||
ts.push(t);
|
||||
us.push(u);
|
||||
}
|
||||
(ts, us)
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use prelude::*;
|
||||
use mem::size_of;
|
||||
use super::unzip;
|
||||
|
||||
#[test]
|
||||
fn test_small_vec_struct() {
|
||||
@ -1687,4 +1708,16 @@ mod tests {
|
||||
assert_eq!([&[1], &[2, 3]].connect_vec(&0), vec![1, 0, 2, 3]);
|
||||
assert_eq!([&[1], &[2], &[3]].connect_vec(&0), vec![1, 0, 2, 0, 3]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_zip_unzip() {
|
||||
let z1 = vec![(1, 4), (2, 5), (3, 6)];
|
||||
|
||||
let (left, right) = unzip(z1.iter().map(|&x| x));
|
||||
|
||||
let (left, right) = (left.as_slice(), right.as_slice());
|
||||
assert_eq!((1, 4), (left[0], right[0]));
|
||||
assert_eq!((2, 5), (left[1], right[1]));
|
||||
assert_eq!((3, 6), (left[2], right[2]));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user