Enum EitherOrBoth

Source
pub enum EitherOrBoth<T> {
    Both(T, T),
    Left(T),
    Right(T),
}
Available on crate feature runner only.
Expand description

Either left or right or both can be present

Most of the time, this enum is used to store (new, old) output, metrics, etc. Per convention left is new and right is old.

Variants§

§

Both(T, T)

Both values (new and old) are present

§

Left(T)

The left or new value

§

Right(T)

The right or old value

Implementations§

Source§

impl<T> EitherOrBoth<T>

Source

pub fn left(&self) -> Option<&T>

Try to return the left (new) value

Source

pub fn right(&self) -> Option<&T>

Try to return the right (old) value

Source

pub fn map<F, N>(self, f: F) -> EitherOrBoth<N>
where F: Fn(T) -> N,

Apply the function f to the inner value of EitherOrBoth and return a new EitherOrBoth

Source

pub fn as_ref(&self) -> EitherOrBoth<&T>

Converts from &EitherOrBoth<T> to EitherOrBoth<&T>

Trait Implementations§

Source§

impl<T: Clone> Clone for EitherOrBoth<T>

Source§

fn clone(&self) -> EitherOrBoth<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for EitherOrBoth<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de, T> Deserialize<'de> for EitherOrBoth<T>
where T: Deserialize<'de>,

Source§

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<T> JsonSchema for EitherOrBoth<T>
where T: JsonSchema,

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl<T: PartialEq> PartialEq for EitherOrBoth<T>

Source§

fn eq(&self, other: &EitherOrBoth<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T> Serialize for EitherOrBoth<T>
where T: Serialize,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<T> TryFrom<(Option<T>, Option<T>)> for EitherOrBoth<T>

Source§

type Error = String

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

fn try_from(value: (Option<T>, Option<T>)) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<T: Eq> Eq for EitherOrBoth<T>

Source§

impl<T> StructuralPartialEq for EitherOrBoth<T>

Auto Trait Implementations§

§

impl<T> Freeze for EitherOrBoth<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for EitherOrBoth<T>
where T: RefUnwindSafe,

§

impl<T> Send for EitherOrBoth<T>
where T: Send,

§

impl<T> Sync for EitherOrBoth<T>
where T: Sync,

§

impl<T> Unpin for EitherOrBoth<T>
where T: Unpin,

§

impl<T> UnwindSafe for EitherOrBoth<T>
where T: UnwindSafe,

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> 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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
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> Is for T
where T: ?Sized,

Source§

type EqTo = T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,