@hirschenberger The only reason to take `&Vec<T>` is if you are, in fact, taking `&mut Vec<T>` and need to modify the vector. Otherwise, `&[T]` is better. Not only can you produce a `&[T]` from more data structures than just a `Vec<T>`, but it can also be sliced, whereas a `&Vec<T>` must cover the entire range of the input `Vec<T>` (as slicing a `Vec<T>` actually gives you back a `&[T]`).

If it helps, consider taking `&Vec<T>` to be the equivalent of taking `&~[T]` (because that's basically what it is).