Struct Restrict
pub struct Restrict<T>(/* private fields */);Available on crate feature
dns only.Expand description
Untrusted types will be wrapped in this type.
To gain access to the data, some form of verification through one of the public methods is necessary.
Implementations§
§impl<T> Restrict<T>
impl<T> Restrict<T>
pub fn verify<'a, F>(&'a self, f: F) -> Verified<'a, T>
pub fn verify<'a, F>(&'a self, f: F) -> Verified<'a, T>
It is the responsibility of this function to verify the contained type is valid.
use hickory_proto::serialize::binary::Restrict;
let unrestricted = Restrict::new(0).verify(|r| *r == 0).then(|r| *r + 1).unwrap();
assert!(unrestricted == 1);§Returns
If f returns true then the value is valid and a chainable Verified type is returned
pub fn verify_unwrap<F>(self, f: F) -> Result<T, T>
pub fn verify_unwrap<F>(self, f: F) -> Result<T, T>
It is the responsibility of this function to verify the contained type is valid.
use hickory_proto::serialize::binary::Restrict;
let unrestricted = Restrict::new(0).verify_unwrap(|r| *r == 0).unwrap();
assert!(unrestricted == 0);§Returns
If f returns true then the value is valid and Ok(T) is returned. Otherwise
Err(T) is returned.
pub fn unverified(self) -> T
pub fn unverified(self) -> T
Unwraps the value without verifying the data, akin to Result::unwrap and Option::unwrap, but will not panic
pub fn map<R, F>(self, f: F) -> Restrict<R>where
F: Fn(T) -> R,
pub fn map<R, F>(self, f: F) -> Restrict<R>where
F: Fn(T) -> R,
Map the internal type of the restriction
use hickory_proto::serialize::binary::Restrict;
let restricted = Restrict::new(0).map(|b| vec![b, 1]);
assert!(restricted.verify(|v| v == &[0, 1]).is_valid());
assert!(!restricted.verify(|v| v == &[1, 0]).is_valid());Trait Implementations§
§impl RestrictedMath for Restrict<u16>
impl RestrictedMath for Restrict<u16>
§fn checked_add(
&self,
arg: <Restrict<u16> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<u16> as RestrictedMath>::Value>, <Restrict<u16> as RestrictedMath>::Arg>
fn checked_add( &self, arg: <Restrict<u16> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<u16> as RestrictedMath>::Value>, <Restrict<u16> as RestrictedMath>::Arg>
Checked addition, see
usize::checked_add§fn checked_sub(
&self,
arg: <Restrict<u16> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<u16> as RestrictedMath>::Value>, <Restrict<u16> as RestrictedMath>::Arg>
fn checked_sub( &self, arg: <Restrict<u16> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<u16> as RestrictedMath>::Value>, <Restrict<u16> as RestrictedMath>::Arg>
Checked subtraction, see
usize::checked_sub§fn checked_mul(
&self,
arg: <Restrict<u16> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<u16> as RestrictedMath>::Value>, <Restrict<u16> as RestrictedMath>::Arg>
fn checked_mul( &self, arg: <Restrict<u16> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<u16> as RestrictedMath>::Value>, <Restrict<u16> as RestrictedMath>::Arg>
Checked multiplication, see
usize::checked_mul§impl RestrictedMath for Restrict<u8>
impl RestrictedMath for Restrict<u8>
§fn checked_add(
&self,
arg: <Restrict<u8> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<u8> as RestrictedMath>::Value>, <Restrict<u8> as RestrictedMath>::Arg>
fn checked_add( &self, arg: <Restrict<u8> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<u8> as RestrictedMath>::Value>, <Restrict<u8> as RestrictedMath>::Arg>
Checked addition, see
usize::checked_add§fn checked_sub(
&self,
arg: <Restrict<u8> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<u8> as RestrictedMath>::Value>, <Restrict<u8> as RestrictedMath>::Arg>
fn checked_sub( &self, arg: <Restrict<u8> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<u8> as RestrictedMath>::Value>, <Restrict<u8> as RestrictedMath>::Arg>
Checked subtraction, see
usize::checked_sub§fn checked_mul(
&self,
arg: <Restrict<u8> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<u8> as RestrictedMath>::Value>, <Restrict<u8> as RestrictedMath>::Arg>
fn checked_mul( &self, arg: <Restrict<u8> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<u8> as RestrictedMath>::Value>, <Restrict<u8> as RestrictedMath>::Arg>
Checked multiplication, see
usize::checked_mul§impl RestrictedMath for Restrict<usize>
impl RestrictedMath for Restrict<usize>
§fn checked_add(
&self,
arg: <Restrict<usize> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<usize> as RestrictedMath>::Value>, <Restrict<usize> as RestrictedMath>::Arg>
fn checked_add( &self, arg: <Restrict<usize> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<usize> as RestrictedMath>::Value>, <Restrict<usize> as RestrictedMath>::Arg>
Checked addition, see
usize::checked_add§fn checked_sub(
&self,
arg: <Restrict<usize> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<usize> as RestrictedMath>::Value>, <Restrict<usize> as RestrictedMath>::Arg>
fn checked_sub( &self, arg: <Restrict<usize> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<usize> as RestrictedMath>::Value>, <Restrict<usize> as RestrictedMath>::Arg>
Checked subtraction, see
usize::checked_sub§fn checked_mul(
&self,
arg: <Restrict<usize> as RestrictedMath>::Arg,
) -> Result<Restrict<<Restrict<usize> as RestrictedMath>::Value>, <Restrict<usize> as RestrictedMath>::Arg>
fn checked_mul( &self, arg: <Restrict<usize> as RestrictedMath>::Arg, ) -> Result<Restrict<<Restrict<usize> as RestrictedMath>::Value>, <Restrict<usize> as RestrictedMath>::Arg>
Checked multiplication, see
usize::checked_mulimpl<T> Copy for Restrict<T>where
T: Copy,
Auto Trait Implementations§
impl<T> Freeze for Restrict<T>where
T: Freeze,
impl<T> RefUnwindSafe for Restrict<T>where
T: RefUnwindSafe,
impl<T> Send for Restrict<T>where
T: Send,
impl<T> Sync for Restrict<T>where
T: Sync,
impl<T> Unpin for Restrict<T>where
T: Unpin,
impl<T> UnwindSafe for Restrict<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Create a new
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more