pub(crate) mod base;
mod constants;
mod dependents;
mod lax;
mod required;
pub(crate) mod types;
mod virtuals;
use std::marker::PhantomData;
use crate::{
schema::{
fields::{
constants::ConstantFieldBuilder, dependents::DependentFieldBuilder,
lax::LaxFieldBuilder, required::RequiredFieldBuilder, virtuals::VirtualFieldBuilder,
},
types::FieldValue,
},
types::internal::IvoErrorSanitizer,
IvoStruct,
};
pub use base::TimestampConfig;
pub struct IvoField<
T: FieldValue,
I: IvoStruct,
O: IvoStruct,
CtxOptions,
ErrorSanitizer: IvoErrorSanitizer<CtxOptions>,
> {
_t: PhantomData<T>,
_i: PhantomData<I>,
_o: PhantomData<O>,
_c: PhantomData<CtxOptions>,
_err: PhantomData<ErrorSanitizer>,
}
impl<
T: FieldValue,
I: IvoStruct,
O: IvoStruct,
CtxOptions,
ErrorSanitizer: IvoErrorSanitizer<CtxOptions>,
> IvoField<T, I, O, CtxOptions, ErrorSanitizer>
{
pub const CONSTANT: ConstantFieldBuilder<T, I, O, CtxOptions, ErrorSanitizer> =
ConstantFieldBuilder::new();
pub const DEPENDENT: DependentFieldBuilder<T, I, O, CtxOptions, ErrorSanitizer> =
DependentFieldBuilder::new();
pub const LAX: LaxFieldBuilder<T, I, O, CtxOptions, ErrorSanitizer> = LaxFieldBuilder::new();
pub const REQUIRED: RequiredFieldBuilder<T, I, O, CtxOptions, ErrorSanitizer> =
RequiredFieldBuilder::new();
pub const VIRTUAL: VirtualFieldBuilder<T, I, O, CtxOptions, ErrorSanitizer> =
VirtualFieldBuilder::new();
}