#[diagnostic::on_unimplemented(
message = "field type `{Self}` cannot be used in an index",
label = "not indexable",
note = "only scalar fields, storable Vec<T> fields, newtype embeds, and unit (data-less) \
enums can be index targets; data-carrying enums and multi-field embedded structs \
span multiple columns and have no single index column"
)]
pub trait IndexableField {}
impl<T> IndexableField for Option<T> where T: IndexableField {}
impl<T> IndexableField for Box<T> where T: IndexableField {}
impl<T> IndexableField for std::rc::Rc<T> where T: IndexableField {}
impl<T> IndexableField for std::sync::Arc<T> where T: IndexableField {}
impl<T> IndexableField for crate::Deferred<T> where T: IndexableField {}
impl IndexableField for bool {}
impl IndexableField for i8 {}
impl IndexableField for i16 {}
impl IndexableField for i32 {}
impl IndexableField for i64 {}
impl IndexableField for isize {}
impl IndexableField for u8 {}
impl IndexableField for u16 {}
impl IndexableField for u32 {}
impl IndexableField for u64 {}
impl IndexableField for usize {}
impl IndexableField for f32 {}
impl IndexableField for f64 {}
impl IndexableField for String {}
impl<T> IndexableField for Vec<T> where Vec<T>: crate::schema::Field {}
impl IndexableField for uuid::Uuid {}
#[cfg(feature = "rust_decimal")]
impl IndexableField for rust_decimal::Decimal {}
#[cfg(feature = "bigdecimal")]
impl IndexableField for bigdecimal::BigDecimal {}
#[cfg(feature = "jiff")]
mod jiff_impls {
use super::IndexableField;
impl IndexableField for jiff::Timestamp {}
impl IndexableField for jiff::civil::Date {}
impl IndexableField for jiff::civil::Time {}
impl IndexableField for jiff::civil::DateTime {}
impl IndexableField for jiff::tz::TimeZone {}
}
#[cfg(feature = "net")]
mod net_impls {
use super::IndexableField;
use crate::stmt::{IpCidr, IpInet, MacAddr6, MacAddr8};
impl IndexableField for IpCidr {}
impl IndexableField for IpInet {}
impl IndexableField for MacAddr6 {}
impl IndexableField for MacAddr8 {}
}