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>
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>
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>
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>
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>
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>
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>
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
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>
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
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
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
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,
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 WorkerPool = Workers
Type of the worker pool
Source§fn workers(&self) -> &Self::WorkerPool
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>,
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 Terminal = <TM as TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>>::TerminalNode
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
type TerminalRef<'a> = <TM as TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>>::TerminalNodeRef<'a> where Self: 'a
References to
Self::Terminals Read moreSource§type Rules = R
type Rules = R
Diagram rules, see
DiagramRules for more detailsSource§type TerminalIterator<'a> = <TM as TerminalManager<'id, N, ET, MD, PAGE_SIZE, TAG_BITS>>::Iterator<'a>
where
Self: 'a
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>
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
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
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>
fn get_node(&self, edge: &Self::Edge) -> Node<'_, Self>
Get a reference to the node to which
edge pointsSource§fn clone_edge(&self, edge: &Self::Edge) -> Self::Edge
fn clone_edge(&self, edge: &Self::Edge) -> Self::Edge
Clone
edgeSource§fn try_remove_node(&self, edge: Self::Edge, level: LevelNo) -> bool
fn try_remove_node(&self, edge: Self::Edge, level: LevelNo) -> bool
Drop
edge and try to remove the node it points to Read moreSource§fn num_inner_nodes(&self) -> usize
fn num_inner_nodes(&self) -> usize
Get the count of inner nodes
Source§fn num_levels(&self) -> LevelNo
fn num_levels(&self) -> LevelNo
Get the number of levels Read more
Source§fn num_named_vars(&self) -> VarNo
fn num_named_vars(&self) -> VarNo
Get the number of named variables
Source§fn add_vars(&mut self, additional: VarNo) -> Range<VarNo>
fn add_vars(&mut self, additional: VarNo) -> Range<VarNo>
Add
additional unnamed variables to the decision diagram Read moreSource§fn add_named_vars<S: Into<String>>(
&mut self,
names: impl IntoIterator<Item = S>,
) -> Result<Range<VarNo>, DuplicateVarName>
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>
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 set_var_name(
&mut self,
var: VarNo,
name: impl Into<String>,
) -> Result<(), DuplicateVarName>
fn set_var_name( &mut self, var: VarNo, name: impl Into<String>, ) -> Result<(), DuplicateVarName>
Source§fn name_to_var(&self, name: impl AsRef<str>) -> Option<VarNo>
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 level_to_var(&self, level: LevelNo) -> VarNo
fn level_to_var(&self, level: LevelNo) -> VarNo
Get the variable for the given level Read more
Source§fn levels(&self) -> Self::LevelIterator<'_>
fn levels(&self) -> Self::LevelIterator<'_>
Iterate over the levels from top to bottom
Source§fn get_terminal(&self, terminal: Self::Terminal) -> AllocResult<Self::Edge>
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
fn num_terminals(&self) -> usize
Get the number of terminals Read more
Source§fn terminals(&self) -> Self::TerminalIterator<'_>
fn terminals(&self) -> Self::TerminalIterator<'_>
Iterator over all terminals Read more
Source§fn reorder<T>(&mut self, f: impl FnOnce(&mut Self) -> T) -> T
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 moreSource§fn reorder_count(&self) -> u64
fn reorder_count(&self) -> u64
Get the count of reordering operations Read more
Source§fn approx_num_inner_nodes(&self) -> usize
fn approx_num_inner_nodes(&self) -> usize
Get an approximate count of inner nodes Read more
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>
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>
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> 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> 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