Hi! I'm trying to implement `rand::seq::SliceRandom` for a custom Vec-like collection I'm building. However, I found myself stuck in trying to implement `SliceRandom::choose_multiple`. The collection is set up as follows: ```rust pub struct PaletteVec<T> { palette: ::indexset::IndexSet<T>, // Vec of indices into `self.palette` items: Vec<usize>, } ``` Getting a `T` from this collection involves mapping a `usize` obtained from `self.items`, to a `T` obtained from `self.palette`. In most cases, I can use `Iterator::map` or `Option::map` for this. However, `SliceRandom::choose_multiple` and `SliceRandom::choose_multiple_weighted` require me to return a `rand::seq::SliceChooseIter`. I do not see a way to construct this on my own - the only way to make one is via `self.items.choose_multiple()`, which would return a `usize` rather than a `T` - and I especially do not see a way to implement this such that it maps the `usize`s to `T`s before returning values. Because I can't return a `SliceChooseIter`, I can't implement `SliceRandom` - not unless I decide to put `unimplemented!()` in the methods that return a `SliceChooseIter`. This feels like a deficiency in the `rand` crate, one that I'm unsure how to solve - but I'm also wondering if there's a way around it that I'm unaware of. So, any help with this, please? Or is this something that would require `rand` to change how `SliceRandom` is implemented?