I have struct as shown below and I can "borrow" it as the template parameter "K".
#[derive(Debug)]
pub (super) struct KeyValue<K, V>
where K : Eq + Hash + Debug,
V : Debug
{
k : K,
v : V
}
impl<K, V> Borrow<K> for KeyValue<K, V>
where K : Eq + Hash + Debug,
V : Debug,
{
fn borrow(&self) -> &K
{
return &self.k_;
}
}
However if the K is a String I would like to borrow it as a &str too. How can I accomplish that? I would like to do something as shown below. But this obviously doesn't compile. Any suggestions as to how this can be accomplished?
impl<K, V> Borrow<Q> for KeyValue<K, V>
where K : Borrow<Q> + Eq + Hash + Debug,
V : Debug,
{
fn borrow(&self) -> &Q
{
return &self.k_.borrow();
}
}