Manager

Struct Manager 

Source
pub struct Manager<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32>
where N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>>, ET: Tag, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>, MD: DropWith<Edge<'id, N, ET, TAG_BITS>>,
{ /* private fields */ }

Trait Implementations§

Source§

impl<'id, T, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> AsMut<T> for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>
where N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>>, ET: Tag, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>, MD: DropWith<Edge<'id, N, ET, TAG_BITS>> + AsMut<T>,

Source§

fn as_mut(&mut self) -> &mut T

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl<'id, T, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> AsRef<T> for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>
where N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>>, ET: Tag, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>, MD: DropWith<Edge<'id, N, ET, TAG_BITS>> + AsRef<T>,

Source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> Drop for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>
where N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>>, ET: Tag, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>, MD: DropWith<Edge<'id, N, ET, TAG_BITS>>,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<'a, 'id, NC: InnerNodeCons<ET, TAG_BITS>, ET: Tag, TMC: TerminalManagerCons<NC, ET, RC, MDC, PAGE_SIZE, TAG_BITS>, RC: DiagramRulesCons<NC, ET, TMC, MDC, PAGE_SIZE, TAG_BITS>, MDC: ManagerDataCons<NC, ET, TMC, RC, PAGE_SIZE, TAG_BITS>, const PAGE_SIZE: usize, const TAG_BITS: u32> From<&'a Manager<'id, <NC as InnerNodeCons<ET, TAG_BITS>>::T<'id>, ET, <TMC as TerminalManagerCons<NC, ET, RC, MDC, PAGE_SIZE, TAG_BITS>>::T<'id>, <RC as DiagramRulesCons<NC, ET, TMC, MDC, PAGE_SIZE, TAG_BITS>>::T<'id>, <MDC as ManagerDataCons<NC, ET, TMC, RC, PAGE_SIZE, TAG_BITS>>::T<'id>, PAGE_SIZE, TAG_BITS>> for ManagerRef<NC, ET, TMC, RC, MDC, PAGE_SIZE, TAG_BITS>

Source§

fn from( manager: &'a Manager<'id, <NC as InnerNodeCons<ET, TAG_BITS>>::T<'id>, ET, <TMC as TerminalManagerCons<NC, ET, RC, MDC, PAGE_SIZE, TAG_BITS>>::T<'id>, <RC as DiagramRulesCons<NC, ET, TMC, MDC, PAGE_SIZE, TAG_BITS>>::T<'id>, <MDC as ManagerDataCons<NC, ET, TMC, RC, PAGE_SIZE, TAG_BITS>>::T<'id>, PAGE_SIZE, TAG_BITS>, ) -> Self

Converts to this type from the input type.
Source§

impl<'id, N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>>, ET: Tag, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>, R: DiagramRules<Edge<'id, N, ET, TAG_BITS>, N, TM::TerminalNode>, MD: HasApplyCache<Self, O> + ManagerEventSubscriber<Self> + DropWith<Edge<'id, N, ET, TAG_BITS>>, O: Copy, const PAGE_SIZE: usize, const TAG_BITS: u32> HasApplyCache<Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>, O> for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>

Source§

type ApplyCache = <MD as HasApplyCache<Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>, O>>::ApplyCache

The concrete apply cache type
Source§

fn apply_cache(&self) -> &Self::ApplyCache

Get a shared reference to the contained apply cache
Source§

fn apply_cache_mut(&mut self) -> &mut Self::ApplyCache

Get a mutable reference to the contained apply cache
Source§

impl<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> HasWorkers for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>
where N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>> + Send + Sync, ET: Tag + Send + Sync, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS> + Send + Sync, R: DiagramRules<Edge<'id, N, ET, TAG_BITS>, N, TM::TerminalNode>, MD: DropWith<Edge<'id, N, ET, TAG_BITS>> + ManagerEventSubscriber<Self> + Send + Sync,

Source§

type WorkerPool = Workers

Type of the worker pool
Source§

fn workers(&self) -> &Self::WorkerPool

Get the worker pool
Source§

impl<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> Manager for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>
where N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>>, ET: Tag, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>, R: DiagramRules<Edge<'id, N, ET, TAG_BITS>, N, TM::TerminalNode>, MD: DropWith<Edge<'id, N, ET, TAG_BITS>> + ManagerEventSubscriber<Self>,

Source§

type Edge = Edge<'id, N, ET, TAG_BITS>

Type of edge
Source§

type EdgeTag = ET

Type of edge tags
Source§

type InnerNode = N

Type of inner nodes
Source§

type Terminal = <TM as TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>>::TerminalNode

Type of terminals
Source§

type TerminalRef<'a> = <TM as TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>>::TerminalNodeRef<'a> where Self: 'a

References to Self::Terminals Read more
Source§

type Rules = R

Diagram rules, see DiagramRules for more details
Source§

type TerminalIterator<'a> = <TM as TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>>::Iterator<'a> where Self: 'a

Iterator over all terminals Read more
Source§

type NodeSet = NodeSet<PAGE_SIZE, TAG_BITS>

Node set type, possibly more efficient than a HashSet<NodeID>
Source§

type LevelView<'a> = LevelView<'a, 'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS> where Self: 'a

A view on a single level of the unique table.
Source§

type LevelIterator<'a> = LevelIter<'a, 'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS> where Self: 'a

Iterator over levels
Source§

fn get_node(&self, edge: &Self::Edge) -> Node<'_, Self>

Get a reference to the node to which edge points
Source§

fn clone_edge(&self, edge: &Self::Edge) -> Self::Edge

Clone edge
Source§

fn drop_edge(&self, edge: Self::Edge)

Drop edge
Source§

fn try_remove_node(&self, edge: Self::Edge, level: LevelNo) -> bool

Drop edge and try to remove the node it points to Read more
Source§

fn num_inner_nodes(&self) -> usize

Get the count of inner nodes
Source§

fn num_levels(&self) -> LevelNo

Get the number of levels Read more
Source§

fn num_named_vars(&self) -> VarNo

Get the number of named variables
Source§

fn add_vars(&mut self, additional: VarNo) -> Range<VarNo>

Add additional unnamed variables to the decision diagram Read more
Source§

fn add_named_vars<S: Into<String>>( &mut self, names: impl IntoIterator<Item = S>, ) -> Result<Range<VarNo>, DuplicateVarName>

Add named variables to the decision diagram Read more
Source§

fn add_named_vars_from_map( &mut self, map: VarNameMap, ) -> Result<Range<VarNo>, DuplicateVarName>

Add named variables to the decision diagram Read more
Source§

fn var_name(&self, var: VarNo) -> &str

Get var’s name Read more
Source§

fn set_var_name( &mut self, var: VarNo, name: impl Into<String>, ) -> Result<(), DuplicateVarName>

Label var as name Read more
Source§

fn name_to_var(&self, name: impl AsRef<str>) -> Option<VarNo>

Get the variable number for the given variable name, if present Read more
Source§

fn var_to_level(&self, var: VarNo) -> LevelNo

Get the level for the given variable Read more
Source§

fn level_to_var(&self, level: LevelNo) -> VarNo

Get the variable for the given level Read more
Source§

fn level(&self, no: LevelNo) -> Self::LevelView<'_>

Get the level given by no Read more
Source§

fn levels(&self) -> Self::LevelIterator<'_>

Iterate over the levels from top to bottom
Source§

fn get_terminal(&self, terminal: Self::Terminal) -> AllocResult<Self::Edge>

Get an edge for the given terminal Read more
Source§

fn num_terminals(&self) -> usize

Get the number of terminals Read more
Source§

fn terminals(&self) -> Self::TerminalIterator<'_>

Iterator over all terminals Read more
Source§

fn gc(&self) -> usize

Perform garbage collection Read more
Source§

fn reorder<T>(&mut self, f: impl FnOnce(&mut Self) -> T) -> T

Prepare and postprocess a reordering operation. The reordering itself is performed in f. Read more
Source§

fn gc_count(&self) -> u64

Get the count of garbage collections Read more
Source§

fn reorder_count(&self) -> u64

Get the count of reordering operations Read more
Source§

fn approx_num_inner_nodes(&self) -> usize

Get an approximate count of inner nodes Read more
Source§

fn num_vars(&self) -> u32

Get the number of variables Read more
Source§

impl<'id, N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>> + Send + Sync, ET: Tag + Send + Sync, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS> + Send + Sync, R, MD: DropWith<Edge<'id, N, ET, TAG_BITS>> + Send + Sync, const PAGE_SIZE: usize, const TAG_BITS: u32> Send for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>

Source§

impl<'id, N: NodeBase + InnerNode<Edge<'id, N, ET, TAG_BITS>> + Send + Sync, ET: Tag + Send + Sync, TM: TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS> + Send + Sync, R, MD: DropWith<Edge<'id, N, ET, TAG_BITS>> + Send + Sync, const PAGE_SIZE: usize, const TAG_BITS: u32> Sync for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>

Auto Trait Implementations§

§

impl<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> !Freeze for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>

§

impl<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> !RefUnwindSafe for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>

§

impl<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> Unpin for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>
where MD: Unpin, TM: Unpin, R: Unpin,

§

impl<'id, N, ET, TM, R, MD, const PAGE_SIZE: usize, const TAG_BITS: u32> !UnwindSafe for Manager<'id, N, ET, TM, R, MD, PAGE_SIZE, TAG_BITS>

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> 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.