Hello friends!
I'm trying to accomplish Vec<(T, U)> -> HashMap<T, U>.
How would I go about doing this?
What I have so far:
impl<T, U> Paginatable<T, U> for std::vec::Vec<T>
where T: Eq + std::hash::Hash + std::clone::Clone,
U: Eq + std::clone::Clone,
std::collections::HashMap<T, U>: std::convert::From<std::vec::IntoIter<T>>
{
fn paginate(&mut self, page: u32) -> Paginator<T, U> {
let per_page : f32 = 25.0;
let len = self.len() as f32;
let last_page : u32 = (len/per_page).ceil() as u32;
let prev_page : Option<u32>;
let next_page : Option<u32>;
if page != 1 {
prev_page = Some(page - 1);
}
else {
prev_page = None;
}
if page != last_page {
next_page = Some(page + 1);
}
else {
next_page = None;
}
let end : usize = (per_page as u32 * page) as usize;
let start : usize = end - (per_page as usize);
let values_as_hm_2 = HashMap::from(self.clone().into_iter());
let values = into_range(values_as_hm_2, start, end);
Paginator {
curr_page: page,
next_page: next_page,
prev_page: prev_page,
data: values,
per_page: per_page as u32,
last_page: last_page,
total_hits: len as u32
}
}
}
The problem with this method is that when I try to call it, for instance on a Vector of tuples &str, &str, I get error regarding not satisfying trait bounds.
Of course I know what the issue is, I just want to know if there is another approach I could take to this to make it work?