pub struct Refinement<T, P: Predicate<T>>(/* private fields */);Expand description
A refinement of a type T certifying that the Predicate P holds.
Trait Implementations§
Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThan<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN + B::UMIN }>, LessThanEqual<{ MAX + B::UMAX }>>>
The resulting type after applying the
+ operator.Source§impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThan<{ A + B::UMIN }>>
type Output = Refinement<Type, GreaterThan<{ A + B::UMIN }>>
The resulting type after applying the
+ operator.Source§impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThan<{ A + B::UMIN }>>
type Output = Refinement<Type, GreaterThan<{ A + B::UMIN }>>
The resulting type after applying the
+ operator.Source§impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThanEqual<{ A + B::UMIN }>>
type Output = Refinement<Type, GreaterThanEqual<{ A + B::UMIN }>>
The resulting type after applying the
+ operator.Source§impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMin<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThanEqual<{ A + B::UMIN }>>
type Output = Refinement<Type, GreaterThanEqual<{ A + B::UMIN }>>
The resulting type after applying the
+ operator.Source§impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features
arithmetic and implication only.Source§impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features
arithmetic and implication only.Source§impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Add<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, LessThanEqual<{ A + B::UMAX }>>
type Output = Refinement<Type, LessThanEqual<{ A + B::UMAX }>>
The resulting type after applying the
+ operator.Source§impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: isize, Type: SignedBoundable + Add<Output = Type>, B: SignedMax<Type> + Predicate<Type>> Add<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, LessThanEqual<{ A + B::UMAX }>>
type Output = Refinement<Type, LessThanEqual<{ A + B::UMAX }>>
The resulting type after applying the
+ operator.Source§impl<T: Clone, P: Clone + Predicate<T>> Clone for Refinement<T, P>
impl<T: Clone, P: Clone + Predicate<T>> Clone for Refinement<T, P>
Source§fn clone(&self) -> Refinement<T, P>
fn clone(&self) -> Refinement<T, P>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<T: Default, P: Default + Predicate<T>> Default for Refinement<T, P>
impl<T: Default, P: Default + Predicate<T>> Default for Refinement<T, P>
Source§fn default() -> Refinement<T, P>
fn default() -> Refinement<T, P>
Returns the “default value” for a type. Read more
Source§impl<T, P: Predicate<T>> Deref for Refinement<T, P>
impl<T, P: Predicate<T>> Deref for Refinement<T, P>
Source§impl<'de, T: Deserialize<'de>, P: Predicate<T>> Deserialize<'de> for Refinement<T, P>
Available on crate features serde and alloc only.
impl<'de, T: Deserialize<'de>, P: Predicate<T>> Deserialize<'de> for Refinement<T, P>
Available on crate features
serde and alloc only.Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) / B::UMAX - 1 }>, LessThan<{ (MAX - 1) / B::UMIN + 1 }>>>
type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) / B::UMAX - 1 }>, LessThan<{ (MAX - 1) / B::UMIN + 1 }>>>
The resulting type after applying the
/ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ min_div(MIN + 1, MAX - 1, B::UMIN, B::UMAX) - 1 }>, LessThan<{ max_div(MIN + 1, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
type Output = Refinement<Type, And<GreaterThan<{ min_div(MIN + 1, MAX - 1, B::UMIN, B::UMAX) - 1 }>, LessThan<{ max_div(MIN + 1, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
The resulting type after applying the
/ operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) / B::UMAX - 1 }>, LessThanEqual<{ MAX / B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) / B::UMAX - 1 }>, LessThanEqual<{ MAX / B::UMIN }>>>
The resulting type after applying the
/ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ min_div(MIN + 1, MAX, B::UMIN, B::UMAX) - 1 }>, LessThanEqual<{ max_div(MIN + 1, MAX, B::UMIN, B::UMAX) }>>>
type Output = Refinement<Type, And<GreaterThan<{ min_div(MIN + 1, MAX, B::UMIN, B::UMAX) - 1 }>, LessThanEqual<{ max_div(MIN + 1, MAX, B::UMIN, B::UMAX) }>>>
The resulting type after applying the
/ operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN / B::UMAX }>, LessThan<{ (MAX - 1) / B::UMIN + 1 }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN / B::UMAX }>, LessThan<{ (MAX - 1) / B::UMIN + 1 }>>>
The resulting type after applying the
/ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ min_div(MIN, MAX - 1, B::UMIN, B::UMAX) }>, LessThan<{ max_div(MIN, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ min_div(MIN, MAX - 1, B::UMIN, B::UMAX) }>, LessThan<{ max_div(MIN, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
The resulting type after applying the
/ operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN / B::UMAX }>, LessThanEqual<{ MAX / B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN / B::UMAX }>, LessThanEqual<{ MAX / B::UMIN }>>>
The resulting type after applying the
/ operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Div<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ min_div(MIN, MAX, B::UMIN, B::UMAX) }>, LessThanEqual<{ max_div(MIN, MAX, B::UMIN, B::UMAX) }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ min_div(MIN, MAX, B::UMIN, B::UMAX) }>, LessThanEqual<{ max_div(MIN, MAX, B::UMIN, B::UMAX) }>>>
The resulting type after applying the
/ operator.Source§impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThan<{ A / B::UMIN }>>
type Output = Refinement<Type, GreaterThan<{ A / B::UMIN }>>
The resulting type after applying the
/ operator.Source§impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThanEqual<{ A / B::UMIN }>>
type Output = Refinement<Type, GreaterThanEqual<{ A / B::UMIN }>>
The resulting type after applying the
/ operator.Source§impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features
arithmetic and implication only.Source§impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Div<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Div<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, LessThanEqual<A>>
type Output = Refinement<Type, LessThanEqual<A>>
The resulting type after applying the
/ operator.Source§impl<T, P: Predicate<T>> From<Refinement<T, P>> for Refined<T>
impl<T, P: Predicate<T>> From<Refinement<T, P>> for Refined<T>
Source§fn from(value: Refinement<T, P>) -> Self
fn from(value: Refinement<T, P>) -> Self
Converts to this type from the input type.
Source§impl<F, T, Type> Implies<Refinement<Type, T>> for Refinement<Type, F>
Available on crate feature implication only.
impl<F, T, Type> Implies<Refinement<Type, T>> for Refinement<Type, F>
Available on crate feature
implication only.fn imply(self) -> Refinement<Type, T>
Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) * B::UMIN - 1 }>, LessThan<{ (MAX - 1) * B::UMAX + 1 }>>>
type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) * B::UMIN - 1 }>, LessThan<{ (MAX - 1) * B::UMAX + 1 }>>>
The resulting type after applying the
* operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ min_mul(MIN + 1, MAX - 1, B::UMIN, B::UMAX) - 1 }>, LessThan<{ max_mul(MIN + 1, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
type Output = Refinement<Type, And<GreaterThan<{ min_mul(MIN + 1, MAX - 1, B::UMIN, B::UMAX) - 1 }>, LessThan<{ max_mul(MIN + 1, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
The resulting type after applying the
* operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) * B::UMIN - 1 }>, LessThanEqual<{ MAX * B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThan<{ (MIN + 1) * B::UMIN - 1 }>, LessThanEqual<{ MAX * B::UMAX }>>>
The resulting type after applying the
* operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ min_mul(MIN + 1, MAX, B::UMIN, B::UMAX) - 1 }>, LessThanEqual<{ max_mul(MIN + 1, MAX, B::UMIN, B::UMAX) }>>>
type Output = Refinement<Type, And<GreaterThan<{ min_mul(MIN + 1, MAX, B::UMIN, B::UMAX) - 1 }>, LessThanEqual<{ max_mul(MIN + 1, MAX, B::UMIN, B::UMAX) }>>>
The resulting type after applying the
* operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN * B::UMIN }>, LessThan<{ (MAX - 1) * B::UMAX + 1 }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN * B::UMIN }>, LessThan<{ (MAX - 1) * B::UMAX + 1 }>>>
The resulting type after applying the
* operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ min_mul(MIN, MAX - 1, B::UMIN, B::UMAX) }>, LessThan<{ max_mul(MIN, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ min_mul(MIN, MAX - 1, B::UMIN, B::UMAX) }>, LessThan<{ max_mul(MIN, MAX - 1, B::UMIN, B::UMAX) + 1 }>>>
The resulting type after applying the
* operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN * B::UMIN }>, LessThanEqual<{ MAX * B::UMAX }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN * B::UMIN }>, LessThanEqual<{ MAX * B::UMAX }>>>
The resulting type after applying the
* operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Mul<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ min_mul(MIN, MAX, B::UMIN, B::UMAX) }>, LessThanEqual<{ max_mul(MIN, MAX, B::UMIN, B::UMAX) }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ min_mul(MIN, MAX, B::UMIN, B::UMAX) }>, LessThanEqual<{ max_mul(MIN, MAX, B::UMIN, B::UMAX) }>>>
The resulting type after applying the
* operator.Source§impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, GreaterThan<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThan<{ (A + 1) * B::UMIN - 1 }>>
type Output = Refinement<Type, GreaterThan<{ (A + 1) * B::UMIN - 1 }>>
The resulting type after applying the
* operator.Source§impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMin<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThanEqual<{ A * B::UMIN }>>
type Output = Refinement<Type, GreaterThanEqual<{ A * B::UMIN }>>
The resulting type after applying the
* operator.Source§impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, LessThan<A>>
Available on crate features
arithmetic and implication only.Source§impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features arithmetic and implication only.
impl<const A: usize, Type: UnsignedBoundable + Mul<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Mul<Refinement<Type, B>> for Refinement<Type, LessThanEqual<A>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, LessThanEqual<{ A * B::UMAX }>>
type Output = Refinement<Type, LessThanEqual<{ A * B::UMAX }>>
The resulting type after applying the
* operator.Source§impl<T: Ord, P: Ord + Predicate<T>> Ord for Refinement<T, P>
impl<T: Ord, P: Ord + Predicate<T>> Ord for Refinement<T, P>
Source§fn cmp(&self, other: &Refinement<T, P>) -> Ordering
fn cmp(&self, other: &Refinement<T, P>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<T: PartialOrd, P: PartialOrd + Predicate<T>> PartialOrd for Refinement<T, P>
impl<T: PartialOrd, P: PartialOrd + Predicate<T>> PartialOrd for Refinement<T, P>
Source§impl<T, P: Predicate<T>> RefinementOps for Refinement<T, P>
impl<T, P: Predicate<T>> RefinementOps for Refinement<T, P>
type T = T
Source§fn take(self) -> T
fn take(self) -> T
Destructively removes the refined value from the
Refinement wrapper. Read moreSource§fn extract(self) -> T
fn extract(self) -> T
👎Deprecated since 0.0.4: use the more idiomatic ‘take’ function instead
Destructively removes the refined value from the
Refinement wrapper. Read moreSource§fn refine(value: Self::T) -> Result<Self, RefinementError>
fn refine(value: Self::T) -> Result<Self, RefinementError>
Attempts to refine a runtime value with the type’s imbued predicate.
Source§fn modify<F>(self, fun: F) -> Result<Self, RefinementError>
fn modify<F>(self, fun: F) -> Result<Self, RefinementError>
Attempts a modification of a refined value, re-certifying that the predicate
still holds after the modification is complete.
Source§impl<T: Serialize, P: Predicate<T>> Serialize for Refinement<T, P>
Available on crate feature serde only.
impl<T: Serialize, P: Predicate<T>> Serialize for Refinement<T, P>
Available on crate feature
serde only.Source§impl<T, P: StatefulPredicate<T>> StatefulRefinementOps<T, P> for Refinement<T, P>
impl<T, P: StatefulPredicate<T>> StatefulRefinementOps<T, P> for Refinement<T, P>
Source§fn refine_with_state(predicate: &P, value: T) -> Result<Self, RefinementError>
fn refine_with_state(predicate: &P, value: T) -> Result<Self, RefinementError>
Attempts to refine a runtime value with the type’s imbued predicate, statefully.
Source§fn modify_with_state<F>(
self,
predicate: &P,
fun: F,
) -> Result<Self, RefinementError>
fn modify_with_state<F>( self, predicate: &P, fun: F, ) -> Result<Self, RefinementError>
Attempts a modification of a refined value, re-certifying that the stateful predicate
still holds after the modification is complete.
Source§fn replace_with_state(
self,
predicate: &P,
value: <Self as RefinementOps>::T,
) -> Result<Self, RefinementError>
fn replace_with_state( self, predicate: &P, value: <Self as RefinementOps>::T, ) -> Result<Self, RefinementError>
Attempts a replacement of a refined value, re-certifying that the stateful predicate
holds for the new value.
Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, OpenClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThan<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedOpenInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThan<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, const MAX: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features arithmetic and implication only.
impl<const MIN: isize, const MAX: isize, Type: SignedBoundable + Sub<Output = Type>, B: SignedMinMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, ClosedInterval<MIN, MAX>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
type Output = Refinement<Type, And<GreaterThanEqual<{ MIN - B::UMAX }>, LessThanEqual<{ MAX - B::UMIN }>>>
The resulting type after applying the
- operator.Source§impl<const MIN: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, GreaterThan<MIN>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, GreaterThan<MIN>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThan<{ MIN - B::UMAX }>>
type Output = Refinement<Type, GreaterThan<{ MIN - B::UMAX }>>
The resulting type after applying the
- operator.Source§impl<const MIN: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<MIN>>
Available on crate features arithmetic and implication only.
impl<const MIN: usize, Type: UnsignedBoundable + Sub<Output = Type>, B: UnsignedMax<Type> + Predicate<Type>> Sub<Refinement<Type, B>> for Refinement<Type, GreaterThanEqual<MIN>>
Available on crate features
arithmetic and implication only.Source§type Output = Refinement<Type, GreaterThanEqual<{ MIN - B::UMAX }>>
type Output = Refinement<Type, GreaterThanEqual<{ MIN - B::UMAX }>>
The resulting type after applying the
- operator.impl<T: Copy, P: Copy + Predicate<T>> Copy for Refinement<T, P>
impl<T: Eq, P: Eq + Predicate<T>> Eq for Refinement<T, P>
impl<T, P: Predicate<T>> StructuralPartialEq for Refinement<T, P>
Auto Trait Implementations§
impl<T, P> Freeze for Refinement<T, P>where
T: Freeze,
impl<T, P> RefUnwindSafe for Refinement<T, P>where
T: RefUnwindSafe,
P: RefUnwindSafe,
impl<T, P> Send for Refinement<T, P>
impl<T, P> Sync for Refinement<T, P>
impl<T, P> Unpin for Refinement<T, P>
impl<T, P> UnwindSafe for Refinement<T, P>where
T: UnwindSafe,
P: UnwindSafe,
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