use crate::redis::RedisModel;
pub trait AsRedisPairs<M: RedisModel> {
fn as_pairs(&self) -> Vec<(&M::Key, &M::Value)>;
}
impl<'a, M> AsRedisPairs<M> for &'a [&'a M]
where
M: RedisModel,
{
fn as_pairs(&self) -> Vec<(&M::Key, &M::Value)> {
self.iter().map(|m| (m.key_ref(), m.value_ref())).collect()
}
}
impl<'a, M, const N: usize> AsRedisPairs<M> for [&'a M; N]
where
M: RedisModel,
{
fn as_pairs(&self) -> Vec<(&M::Key, &M::Value)> {
self.iter().map(|m| (m.key_ref(), m.value_ref())).collect()
}
}
impl<'a, M> AsRedisPairs<M> for &'a M
where
M: RedisModel,
{
fn as_pairs(&self) -> Vec<(&M::Key, &M::Value)> {
vec![(self.key_ref(), self.value_ref())]
}
}
impl<'a, M> AsRedisPairs<M> for Vec<&'a M>
where
M: RedisModel,
{
fn as_pairs(&self) -> Vec<(&M::Key, &M::Value)> {
self.iter().map(|m| (m.key_ref(), m.value_ref())).collect()
}
}