pub enum RequiredMode {
DeleteValue,
DeleteParent,
}Expand description
Mode how required values should be validated in a SchemaProcessor.
Variants§
DeleteValue
The default mode, which only deletes the value and leaves a remark.
§Examples:
#[derive(Clone, Debug, Default, PartialEq, Empty, FromValue, IntoValue, ProcessValue)]
struct Item {
#[metastructure(required = true)]
name: Annotated<String>,
}
let mut item = Annotated::new(Item {
name: Annotated::empty(),
});
let mut processor = SchemaProcessor::new().with_required(Default::default());
processor::process_value(&mut item, &mut processor, ProcessingState::root()).unwrap();
let name = &item.value().unwrap().name;
assert!(name.value().is_none());
assert!(name.meta().has_errors());DeleteParent
Instead of removing the value, the entire container containing the value is removed.
§Examples:
#[derive(Clone, Debug, Default, PartialEq, Empty, FromValue, IntoValue, ProcessValue)]
struct Item {
#[metastructure(required = true)]
name: Annotated<String>,
}
let mut item = Annotated::new(Item {
name: Annotated::empty(),
});
let mut processor = SchemaProcessor::new().with_required(RequiredMode::DeleteParent);
processor::process_value(&mut item, &mut processor, ProcessingState::root()).unwrap();
assert!(item.meta().has_errors());
assert!(item.value().is_none());Trait Implementations§
Source§impl Debug for RequiredMode
impl Debug for RequiredMode
Source§impl Default for RequiredMode
impl Default for RequiredMode
Source§fn default() -> RequiredMode
fn default() -> RequiredMode
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for RequiredMode
impl RefUnwindSafe for RequiredMode
impl Send for RequiredMode
impl Sync for RequiredMode
impl Unpin for RequiredMode
impl UnwindSafe for RequiredMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].