use std::fmt;
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct ItemWithValue<T, V> {
item: T,
value: V,
}
impl<T, V> ItemWithValue<T, V> {
pub fn new(item: T, value: V) -> Self {
Self { item, value }
}
pub fn item(&self) -> &T {
&self.item
}
pub fn value(&self) -> &V {
&self.value
}
pub fn into_parts(self) -> (T, V) {
(self.item, self.value)
}
}
impl<T: fmt::Display, V: fmt::Display> fmt::Display for ItemWithValue<T, V> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{} ({})", self.item, self.value)
}
}