Skip to main content

DebugValidationPolicy

Struct DebugValidationPolicy 

Source
pub struct DebugValidationPolicy<P: ValidationPolicy>(/* private fields */);
Expand description

A validation policy that is active only in debug builds.

This struct acts as a wrapper around another ValidationPolicy.

  • In debug builds (#[cfg(debug_assertions)]), it delegates validation directly to the inner policy P.
  • In release builds (#[cfg(not(debug_assertions))]), it becomes a “no-op” (no operation), meaning its validate and validate_ref methods do nothing and always return Ok.

This is useful for enforcing strict, potentially expensive validations during development and testing, while eliminating their performance overhead in production code.

§Generic Parameters

§Example

use num_valid::{validation::{DebugValidationPolicy, StrictFinitePolicy, Native64RawRealStrictFinitePolicy}};
use try_create::ValidationPolicy;

// Define a policy that uses Native64RawRealStrictFinitePolicy
// (i.e. StrictFinitePolicy<f64, 53>) only in debug builds.
type MyPolicy = DebugValidationPolicy<Native64RawRealStrictFinitePolicy>;

let nan_value = f64::NAN;
let result = MyPolicy::validate(nan_value);

#[cfg(debug_assertions)]
{
    // In debug mode, the validation fails because StrictFinitePolicy catches NaN.
    assert!(result.is_err());
}

#[cfg(not(debug_assertions))]
{
    // In release mode, the validation is skipped and always succeeds.
    assert!(result.is_ok());
}

Trait Implementations§

Source§

impl<RawComplex: RawComplexTrait, const PRECISION: u32> GuaranteesFiniteComplexValues for DebugValidationPolicy<StrictFinitePolicy<RawComplex, PRECISION>>
where StrictFinitePolicy<RawComplex, PRECISION>: ValidationPolicyComplex,

Source§

impl<RawReal: RawRealTrait, const PRECISION: u32> GuaranteesFiniteRealValues for DebugValidationPolicy<StrictFinitePolicy<RawReal, PRECISION>>
where StrictFinitePolicy<RawReal, PRECISION>: ValidationPolicyReal,

Source§

impl<P: ValidationPolicy> ValidationPolicy for DebugValidationPolicy<P>

Source§

type Value = <P as ValidationPolicy>::Value

The type of the value to be validated.
Source§

type Error = <P as ValidationPolicy>::Error

The type of the error returned if validation fails.
Source§

fn validate_ref(value: &Self::Value) -> Result<(), Self::Error>

Validates a value by reference. Read more
Source§

fn validate(v: Self::Value) -> Result<Self::Value, Self::Error>

Validates a value by consuming it. Read more
Source§

impl<P> ValidationPolicyComplex for DebugValidationPolicy<P>

Source§

const PRECISION: u32 = P::PRECISION

The precision (in bits) of the validated complex type’s components. Read more
Source§

impl<P> ValidationPolicyReal for DebugValidationPolicy<P>

Source§

const PRECISION: u32 = P::PRECISION

The precision (in bits) of the validated real type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> StrictAs for T

Source§

fn strict_as<Dst>(self) -> Dst
where T: StrictCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> StrictCastFrom<Src> for Dst
where Src: StrictCast<Dst>,

Source§

fn strict_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.