#[diagnostic::on_unimplemented(
message = "field type `{Self}` cannot be used in an index",
label = "not indexable",
note = "only scalar fields, newtype embeds, and unit (data-less) enums can be indexed; \
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 IndexableField for Vec<u8> {}
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 {}
}