use qubit_datatype::DataType;
#[must_use]
#[non_exhaustive]
#[derive(Debug, Clone, Copy)]
pub enum MultiValuesRef<'a> {
Unset(DataType),
Bool(&'a [bool]),
Char(&'a [char]),
Int8(&'a [i8]),
Int16(&'a [i16]),
Int32(&'a [i32]),
Int64(&'a [i64]),
Int128(&'a [i128]),
UInt8(&'a [u8]),
UInt16(&'a [u16]),
UInt32(&'a [u32]),
UInt64(&'a [u64]),
UInt128(&'a [u128]),
Float32(&'a [f32]),
Float64(&'a [f64]),
#[cfg(feature = "big-integer")]
BigInteger(&'a [num_bigint::BigInt]),
#[cfg(feature = "big-decimal")]
BigDecimal(&'a [bigdecimal::BigDecimal]),
String(&'a [String]),
#[cfg(feature = "chrono")]
Date(&'a [chrono::NaiveDate]),
#[cfg(feature = "chrono")]
Time(&'a [chrono::NaiveTime]),
#[cfg(feature = "chrono")]
DateTime(&'a [chrono::NaiveDateTime]),
#[cfg(feature = "chrono")]
Instant(&'a [chrono::DateTime<chrono::Utc>]),
Duration(&'a [std::time::Duration]),
#[cfg(feature = "url")]
Url(&'a [url::Url]),
StringMap(&'a [std::collections::HashMap<String, String>]),
#[cfg(feature = "json")]
Json(&'a [serde_json::Value]),
}