pub enum Logical {
False,
Unknown,
True,
}Expand description
LOGICAL type
use step_p21::primitive::Logical;
// Default
assert_eq!(Logical::default(), Logical::Unknown);
// From<bool>
assert_eq!(Logical::True, true.into());
assert_eq!(Logical::False, false.into());
// From<Option<bool>>
assert_eq!(Logical::True, Some(true).into());
assert_eq!(Logical::False, Some(false).into());
assert_eq!(Logical::Unknown, None.into());
// Not
assert_eq!(Logical::True, !Logical::False);
assert_eq!(Logical::False, !Logical::True);
assert_eq!(Logical::Unknown, !Logical::Unknown);
// BitAnd
assert_eq!(Logical::True & Logical::True, Logical::True);
assert_eq!(Logical::True & Logical::Unknown, Logical::Unknown);
assert_eq!(Logical::True & Logical::False, Logical::False);
assert_eq!(Logical::False & Logical::True, Logical::False);
assert_eq!(Logical::False & Logical::Unknown, Logical::False);
assert_eq!(Logical::False & Logical::False, Logical::False);
assert_eq!(Logical::Unknown & Logical::True, Logical::Unknown);
assert_eq!(Logical::Unknown & Logical::Unknown, Logical::Unknown);
assert_eq!(Logical::Unknown & Logical::False, Logical::False);
// BitOr
assert_eq!(Logical::True | Logical::True, Logical::True);
assert_eq!(Logical::True | Logical::Unknown, Logical::True);
assert_eq!(Logical::True | Logical::False, Logical::True);
assert_eq!(Logical::False | Logical::True, Logical::True);
assert_eq!(Logical::False | Logical::Unknown, Logical::Unknown);
assert_eq!(Logical::False | Logical::False, Logical::False);
assert_eq!(Logical::Unknown | Logical::True, Logical::True);
assert_eq!(Logical::Unknown | Logical::Unknown, Logical::Unknown);
assert_eq!(Logical::Unknown | Logical::False, Logical::Unknown);
// BitXor
assert_eq!(Logical::True ^ Logical::True, Logical::False);
assert_eq!(Logical::True ^ Logical::Unknown, Logical::Unknown);
assert_eq!(Logical::True ^ Logical::False, Logical::True);
assert_eq!(Logical::False ^ Logical::True, Logical::True);
assert_eq!(Logical::False ^ Logical::Unknown, Logical::Unknown);
assert_eq!(Logical::False ^ Logical::False, Logical::False);
assert_eq!(Logical::Unknown ^ Logical::True, Logical::Unknown);
assert_eq!(Logical::Unknown ^ Logical::Unknown, Logical::Unknown);
assert_eq!(Logical::Unknown ^ Logical::False, Logical::Unknown);Variants§
False
Unknown
Three-valued logic’s third value, and the default: an unset LOGICAL
carries no information, which is not the same as being false.
True
Trait Implementations§
impl Copy for Logical
Source§impl<'de> Deserialize<'de> for Logical
impl<'de> Deserialize<'de> for Logical
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
impl Eq for Logical
Source§impl Ord for Logical
impl Ord for Logical
1.21.0 (const: unstable) · 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 PartialOrd for Logical
impl PartialOrd for Logical
impl StructuralPartialEq for Logical
Auto Trait Implementations§
impl Freeze for Logical
impl RefUnwindSafe for Logical
impl Send for Logical
impl Sync for Logical
impl Unpin for Logical
impl UnsafeUnpin for Logical
impl UnwindSafe for Logical
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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