use qubit_datatype::DataType;
macro_rules! define_view {
(; $(([$($cfg:meta),*], $variant:ident, $type:ty, $data_type:expr, $materialization:ident, $json_class:ident, $number_projection:ident, $value_doc:literal, $multi_doc:literal $(, $_wire:tt)*)),+ $(,)?) => {
#[must_use]
#[non_exhaustive]
#[derive(Debug, Clone, Copy)]
pub enum ValueRef<'a> {
Unset(#[doc = "Declared source type."] DataType),
$(
$(#[$cfg])*
#[doc = $value_doc]
$variant(#[doc = "Borrowed or copied source payload."] value_view_payload_type!($variant, $number_projection, 'a, $type)),
)+
}
};
}
for_each_value_type!(define_view);