pub enum Expr {
Const(Ternary),
Var(String),
Not(Box<Expr>),
And(Box<Expr>, Box<Expr>),
Or(Box<Expr>, Box<Expr>),
Xor(Box<Expr>, Box<Expr>),
Implies(Box<Expr>, Box<Expr>),
Equiv(Box<Expr>, Box<Expr>),
}Expand description
表达式节点。
Variants§
Const(Ternary)
逻辑常量。
Var(String)
变量引用。
Not(Box<Expr>)
否定 ¬a。
And(Box<Expr>, Box<Expr>)
与 a ∧ b。
Or(Box<Expr>, Box<Expr>)
或 a ∨ b。
Xor(Box<Expr>, Box<Expr>)
强加法 a ⊕ b。
Implies(Box<Expr>, Box<Expr>)
蕴含 a ⇒ b(右结合)。
Equiv(Box<Expr>, Box<Expr>)
等价 a ≡ b。
Implementations§
Source§impl Expr
impl Expr
Sourcepub fn logical_not(a: Expr) -> Self
pub fn logical_not(a: Expr) -> Self
构造否定节点。
命名为 logical_not 而非 not,避免与 std::ops::Not::not 混淆。
Sourcepub const fn is_unknown_const(&self) -> bool
pub const fn is_unknown_const(&self) -> bool
是否为常量 Unknown。
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
节点总数(用于复杂度统计)。迭代实现。
Sourcepub fn to_infix(&self) -> String
pub fn to_infix(&self) -> String
渲染为规范的中缀记法(带全角运算符),用于展示与化简输出。
递归实现;对未经过预算检查的手工深树,请先调用
check_expr。任意 Expr::Var 的文本
往返由 Expr::try_var 约束,而不是由 Display 本身保证。
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Expr
impl<'de> Deserialize<'de> for Expr
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 Expr
impl StructuralPartialEq for Expr
Auto Trait Implementations§
impl Freeze for Expr
impl RefUnwindSafe for Expr
impl Send for Expr
impl Sync for Expr
impl Unpin for Expr
impl UnsafeUnpin for Expr
impl UnwindSafe for Expr
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