use buffer_vec::{same, BufferVec};
fn select_median_name(unparsed: &str) -> &str {
let mut names: Vec<_> = unparsed.split(' ').collect();
let idx = names.len() / 2;
*names.select_nth_unstable(idx).1
}
fn select_median_name_with_buffer<'names>(
unparsed: &'names str,
buf: &mut BufferVec<*const str>,
) -> &'names str {
let mut names = buf.use_for(same::for_ref());
names.extend(unparsed.split(' '));
let idx = names.len() / 2;
*names.select_nth_unstable(idx).1
}
#[test]
fn works() {
let names = "Adrian Carla Beren Eliza Dala";
let mut buffer = BufferVec::default();
assert_eq!(buffer.use_for(same::id()).capacity(), 0);
assert_eq!(select_median_name(names), select_median_name_with_buffer(names, &mut buffer));
assert!(buffer.use_for(same::id()).capacity() >= 5);
assert_eq!(select_median_name(names), select_median_name_with_buffer(names, &mut buffer));
}