use scylla::{
_macro_internal::{Value, ValueTooBig},
frame::value::Unset,
};
#[derive(Clone, Copy, Debug)]
pub enum MaybeUnset<V: Value> {
Unset,
Set(V),
}
impl<V: Value> Value for MaybeUnset<V> {
fn serialize(&self, buf: &mut Vec<u8>) -> Result<(), ValueTooBig> {
match self {
MaybeUnset::Set(v) => v.serialize(buf),
MaybeUnset::Unset => Unset.serialize(buf),
}
}
}
impl<V: Value> From<V> for MaybeUnset<V> {
fn from(v: V) -> Self {
MaybeUnset::Set(v)
}
}
impl<V: Value> From<Option<V>> for MaybeUnset<V> {
fn from(v: Option<V>) -> Self {
match v {
Some(v) => MaybeUnset::Set(v),
None => MaybeUnset::Unset,
}
}
}