[][src]Struct zdd::wrapped::Zdd

pub struct Zdd<Label: Eq + Hash + Clone> { /* fields omitted */ }

A wrapper around a ZDD and its factory.

Methods

impl<Label: Eq + Hash + Clone + Ord> Zdd<Label>[src]

pub fn zero(factory: &Factory<Label>) -> Self[src]

Creates an empty wrapped ZDD.

pub fn one(factory: &Factory<Label>) -> Self[src]

Creates a wrapped ZDD containing the empty combination only.

pub fn of(zdd: &HConsed<ZddTree<Label>>, factory: &Factory<Label>) -> Self[src]

Creates a wrapped ZDD from a regular ZDD.

pub fn get(&self) -> &ZddTree<Label>[src]

The underlying Zdd.

pub fn get_factory(&self) -> &Factory<Label>[src]

The underlying factory.

pub fn add_one(&self) -> Self[src]

Adds the empty combination to a ZDD if it's not already there.

pub fn rm_one(&self) -> Self[src]

Removes the empty combination from a ZDD if it's there.

pub fn lft(&self) -> Result<Zdd<Label>, bool>[src]

Returns the left subtree if the ZDD is a node, an error

  • of true if the ZDD is One (more precisely HasOne(Zero)) and
  • of false if it is Zero.

pub fn rgt(&self) -> Result<Zdd<Label>, bool>[src]

Returns the right subtree if the ZDD is a node, an error of true if the ZDD is One and false if it is Zero.

pub fn kids(&self) -> Result<(Zdd<Label>, Zdd<Label>), bool>[src]

Returns the subtrees if the ZDD is a node, an error of true if the ZDD is One and false if it is Zero.

pub fn count(&self) -> usize[src]

The number of combinations in a ZDD. Cached.

pub fn offset(&self, lbl: Label) -> Self[src]

The set of combinations of zdd in which lbl does not appear. Cached.

pub fn onset(&self, lbl: Label) -> Self[src]

The set of combinations of zdd in which lbl appears, without lbl in them. Cached.

pub fn change(&self, lbl: Label) -> Self[src]

Switches lbl in each combination of zdd. Inverts offset and onset. Cached.

pub fn union(&self, rhs: Self) -> Self[src]

The union of two ZDDs. Cached.

pub fn inter(&self, rhs: Self) -> Self[src]

The intersection of two ZDDs. Cached.

pub fn minus(&self, rhs: Self) -> Self[src]

The difference of two ZDDs. Cached.

pub fn subset(&self, rhs: Self) -> bool[src]

Returns true iff lhs is a subset of rhs. Cached.

Methods from Deref<Target = ZddTree<Label>>

pub fn iter(&self) -> Iterator<Label>[src]

Returns an iterator over a ZddTree. There's no into_iter since a ZDD is immutable anyway.

Trait Implementations

impl<'a, Label: Eq + Hash + Clone + Ord> Add<&'a Zdd<Label>> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the + operator.

impl<'a, 'b, Label: Eq + Hash + Clone + Ord> Add<&'a Zdd<Label>> for &'b Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the + operator.

impl<Label: Eq + Hash + Clone + Ord> Add<Zdd<Label>> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the + operator.

impl<'a, Label: Eq + Hash + Clone + Ord> Add<Zdd<Label>> for &'a Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the + operator.

impl<'a, Label: Eq + Hash + Clone + Ord> BitAnd<&'a Zdd<Label>> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the & operator.

impl<'a, 'b, Label: Eq + Hash + Clone + Ord> BitAnd<&'a Zdd<Label>> for &'b Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the & operator.

impl<Label: Eq + Hash + Clone + Ord> BitAnd<Zdd<Label>> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the & operator.

impl<'a, Label: Eq + Hash + Clone + Ord> BitAnd<Zdd<Label>> for &'a Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the & operator.

impl<'a, Label: Eq + Hash + Clone + Ord> BitOr<&'a Label> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the | operator.

impl<'a, 'b, Label: Eq + Hash + Clone + Ord> BitOr<&'a Label> for &'b Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the | operator.

impl<Label: Eq + Hash + Clone + Ord> BitOr<Label> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the | operator.

impl<'a, Label: Eq + Hash + Clone + Ord> BitOr<Label> for &'a Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the | operator.

impl<'a, Label: Eq + Hash + Clone + Ord> BitXor<&'a Label> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the ^ operator.

impl<'a, 'b, Label: Eq + Hash + Clone + Ord> BitXor<&'a Label> for &'b Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the ^ operator.

impl<Label: Eq + Hash + Clone + Ord> BitXor<Label> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the ^ operator.

impl<'a, Label: Eq + Hash + Clone + Ord> BitXor<Label> for &'a Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the ^ operator.

impl<Label: Clone + Eq + Hash> Clone for Zdd<Label>[src]

impl<Label: Eq + Hash + Clone> Deref for Zdd<Label>[src]

type Target = ZddTree<Label>

The resulting type after dereferencing.

impl<Label: Eq + Hash + Clone + Ord + Display> Display for Zdd<Label>[src]

impl<Label: Eq + Hash + Clone> Eq for Zdd<Label>[src]

impl<Label: Eq + Hash + Clone> Hash for Zdd<Label>[src]

impl<Label: Eq + Hash + Clone> Ord for Zdd<Label>[src]

impl<Label: Eq + Hash + Clone> PartialEq<Zdd<Label>> for Zdd<Label>[src]

impl<Label: Eq + Hash + Clone> PartialOrd<Zdd<Label>> for Zdd<Label>[src]

impl<'a, Label: Eq + Hash + Clone + Ord> Rem<&'a Label> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the % operator.

impl<'a, 'b, Label: Eq + Hash + Clone + Ord> Rem<&'a Label> for &'b Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the % operator.

impl<Label: Eq + Hash + Clone + Ord> Rem<Label> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the % operator.

impl<'a, Label: Eq + Hash + Clone + Ord> Rem<Label> for &'a Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the % operator.

impl<Label: Eq + Hash + Clone> Send for Zdd<Label>[src]

impl<'a, Label: Eq + Hash + Clone + Ord> Shl<&'a Zdd<Label>> for Zdd<Label>[src]

type Output = bool

The resulting type after applying the << operator.

impl<'a, 'b, Label: Eq + Hash + Clone + Ord> Shl<&'a Zdd<Label>> for &'b Zdd<Label>[src]

type Output = bool

The resulting type after applying the << operator.

impl<Label: Eq + Hash + Clone + Ord> Shl<Zdd<Label>> for Zdd<Label>[src]

type Output = bool

The resulting type after applying the << operator.

impl<'a, Label: Eq + Hash + Clone + Ord> Shl<Zdd<Label>> for &'a Zdd<Label>[src]

type Output = bool

The resulting type after applying the << operator.

impl<'a, Label: Eq + Hash + Clone + Ord> Sub<&'a Zdd<Label>> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the - operator.

impl<'a, 'b, Label: Eq + Hash + Clone + Ord> Sub<&'a Zdd<Label>> for &'b Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the - operator.

impl<Label: Eq + Hash + Clone + Ord> Sub<Zdd<Label>> for Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the - operator.

impl<'a, Label: Eq + Hash + Clone + Ord> Sub<Zdd<Label>> for &'a Zdd<Label>[src]

type Output = Zdd<Label>

The resulting type after applying the - operator.

impl<Label: Eq + Hash + Clone> Sync for Zdd<Label>[src]

impl<Label: Display + Ord + Hash + Clone> ZddPrint<Label> for Zdd<Label>[src]

impl<Label: Eq + Hash + Ord + Clone> ZddTreeOps<Label> for Zdd<Label>[src]

Auto Trait Implementations

impl<Label> RefUnwindSafe for Zdd<Label> where
    Label: RefUnwindSafe

impl<Label> Unpin for Zdd<Label>

impl<Label> UnwindSafe for Zdd<Label> where
    Label: RefUnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,