pub struct Manager<'id, N, ET, TM, R, MD, const TERMINALS: usize>where
N: NodeBase + InnerNode<Edge<'id, N, ET>>,
ET: Tag,
TM: TerminalManager<'id, N, ET, TERMINALS>,
MD: DropWith<Edge<'id, N, ET>>,{ /* private fields */ }Trait Implementations§
Source§impl<'id, T, N, ET, TM, R, MD, const TERMINALS: usize> AsMut<T> for Manager<'id, N, ET, TM, R, MD, TERMINALS>
impl<'id, T, N, ET, TM, R, MD, const TERMINALS: usize> AsMut<T> for Manager<'id, N, ET, TM, R, MD, TERMINALS>
Source§impl<'id, T, N, ET, TM, R, MD, const TERMINALS: usize> AsRef<T> for Manager<'id, N, ET, TM, R, MD, TERMINALS>
impl<'id, T, N, ET, TM, R, MD, const TERMINALS: usize> AsRef<T> for Manager<'id, N, ET, TM, R, MD, TERMINALS>
Source§impl<'a, 'id, NC: InnerNodeCons<ET>, ET: Tag, TMC: TerminalManagerCons<NC, ET, TERMINALS>, RC: DiagramRulesCons<NC, ET, TMC, MDC, TERMINALS>, MDC: ManagerDataCons<NC, ET, TMC, RC, TERMINALS>, const TERMINALS: usize> From<&'a Manager<'id, <NC as InnerNodeCons<ET>>::T<'id>, ET, <TMC as TerminalManagerCons<NC, ET, TERMINALS>>::T<'id>, <RC as DiagramRulesCons<NC, ET, TMC, MDC, TERMINALS>>::T<'id>, <MDC as ManagerDataCons<NC, ET, TMC, RC, TERMINALS>>::T<'id>, TERMINALS>> for ManagerRef<NC, ET, TMC, RC, MDC, TERMINALS>
impl<'a, 'id, NC: InnerNodeCons<ET>, ET: Tag, TMC: TerminalManagerCons<NC, ET, TERMINALS>, RC: DiagramRulesCons<NC, ET, TMC, MDC, TERMINALS>, MDC: ManagerDataCons<NC, ET, TMC, RC, TERMINALS>, const TERMINALS: usize> From<&'a Manager<'id, <NC as InnerNodeCons<ET>>::T<'id>, ET, <TMC as TerminalManagerCons<NC, ET, TERMINALS>>::T<'id>, <RC as DiagramRulesCons<NC, ET, TMC, MDC, TERMINALS>>::T<'id>, <MDC as ManagerDataCons<NC, ET, TMC, RC, TERMINALS>>::T<'id>, TERMINALS>> for ManagerRef<NC, ET, TMC, RC, MDC, TERMINALS>
Source§fn from(
manager: &'a Manager<'id, <NC as InnerNodeCons<ET>>::T<'id>, ET, <TMC as TerminalManagerCons<NC, ET, TERMINALS>>::T<'id>, <RC as DiagramRulesCons<NC, ET, TMC, MDC, TERMINALS>>::T<'id>, <MDC as ManagerDataCons<NC, ET, TMC, RC, TERMINALS>>::T<'id>, TERMINALS>,
) -> Self
fn from( manager: &'a Manager<'id, <NC as InnerNodeCons<ET>>::T<'id>, ET, <TMC as TerminalManagerCons<NC, ET, TERMINALS>>::T<'id>, <RC as DiagramRulesCons<NC, ET, TMC, MDC, TERMINALS>>::T<'id>, <MDC as ManagerDataCons<NC, ET, TMC, RC, TERMINALS>>::T<'id>, TERMINALS>, ) -> Self
Converts to this type from the input type.
Source§impl<'id, N: NodeBase + InnerNode<Edge<'id, N, ET>>, ET: Tag, TM: TerminalManager<'id, N, ET, TERMINALS>, R: DiagramRules<Edge<'id, N, ET>, N, TM::TerminalNode>, MD: HasApplyCache<Self, O> + ManagerEventSubscriber<Self> + DropWith<Edge<'id, N, ET>>, O: Copy, const TERMINALS: usize> HasApplyCache<Manager<'id, N, ET, TM, R, MD, TERMINALS>, O> for Manager<'id, N, ET, TM, R, MD, TERMINALS>
impl<'id, N: NodeBase + InnerNode<Edge<'id, N, ET>>, ET: Tag, TM: TerminalManager<'id, N, ET, TERMINALS>, R: DiagramRules<Edge<'id, N, ET>, N, TM::TerminalNode>, MD: HasApplyCache<Self, O> + ManagerEventSubscriber<Self> + DropWith<Edge<'id, N, ET>>, O: Copy, const TERMINALS: usize> HasApplyCache<Manager<'id, N, ET, TM, R, MD, TERMINALS>, O> for Manager<'id, N, ET, TM, R, MD, TERMINALS>
Source§type ApplyCache = <MD as HasApplyCache<Manager<'id, N, ET, TM, R, MD, TERMINALS>, O>>::ApplyCache
type ApplyCache = <MD as HasApplyCache<Manager<'id, N, ET, TM, R, MD, TERMINALS>, 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 TERMINALS: usize> HasWorkers for Manager<'id, N, ET, TM, R, MD, TERMINALS>where
N: NodeBase + InnerNode<Edge<'id, N, ET>> + Send + Sync,
ET: Tag + Send + Sync,
TM: TerminalManager<'id, N, ET, TERMINALS> + Send + Sync,
R: DiagramRules<Edge<'id, N, ET>, N, TM::TerminalNode>,
MD: DropWith<Edge<'id, N, ET>> + ManagerEventSubscriber<Self> + Send + Sync,
impl<'id, N, ET, TM, R, MD, const TERMINALS: usize> HasWorkers for Manager<'id, N, ET, TM, R, MD, TERMINALS>where
N: NodeBase + InnerNode<Edge<'id, N, ET>> + Send + Sync,
ET: Tag + Send + Sync,
TM: TerminalManager<'id, N, ET, TERMINALS> + Send + Sync,
R: DiagramRules<Edge<'id, N, ET>, N, TM::TerminalNode>,
MD: DropWith<Edge<'id, N, ET>> + 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 TERMINALS: usize> Manager for Manager<'id, N, ET, TM, R, MD, TERMINALS>where
N: NodeBase + InnerNode<Edge<'id, N, ET>>,
ET: Tag,
TM: TerminalManager<'id, N, ET, TERMINALS>,
R: DiagramRules<Edge<'id, N, ET>, N, TM::TerminalNode>,
MD: DropWith<Edge<'id, N, ET>> + ManagerEventSubscriber<Self>,
impl<'id, N, ET, TM, R, MD, const TERMINALS: usize> Manager for Manager<'id, N, ET, TM, R, MD, TERMINALS>where
N: NodeBase + InnerNode<Edge<'id, N, ET>>,
ET: Tag,
TM: TerminalManager<'id, N, ET, TERMINALS>,
R: DiagramRules<Edge<'id, N, ET>, N, TM::TerminalNode>,
MD: DropWith<Edge<'id, N, ET>> + ManagerEventSubscriber<Self>,
Source§type Terminal = <TM as TerminalManager<'id, N, ET, TERMINALS>>::TerminalNode
type Terminal = <TM as TerminalManager<'id, N, ET, TERMINALS>>::TerminalNode
Type of terminals
Source§type TerminalRef<'a> = <TM as TerminalManager<'id, N, ET, TERMINALS>>::TerminalNodeRef<'a>
where
Self: 'a
type TerminalRef<'a> = <TM as TerminalManager<'id, N, ET, TERMINALS>>::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, TERMINALS>>::Iterator<'a>
where
Self: 'a
type TerminalIterator<'a> = <TM as TerminalManager<'id, N, ET, TERMINALS>>::Iterator<'a> where Self: 'a
Iterator over all terminals Read more
Source§type LevelView<'a> = LevelView<'a, 'id, N, ET, TM, R, MD, TERMINALS>
where
Self: 'a
type LevelView<'a> = LevelView<'a, 'id, N, ET, TM, R, MD, TERMINALS> 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, TERMINALS>
where
Self: 'a
type LevelIterator<'a> = LevelIter<'a, 'id, N, ET, TM, R, MD, TERMINALS> 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: Edge<'id, N, ET>, level: LevelNo) -> bool
fn try_remove_node(&self, edge: Edge<'id, N, ET>, 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 approx_num_inner_nodes(&self) -> usize
fn approx_num_inner_nodes(&self) -> usize
Get an approximate count of inner nodes Read more
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
impl<'id, N: NodeBase + InnerNode<Edge<'id, N, ET>> + Send + Sync, ET: Tag + Send + Sync, TM: TerminalManager<'id, N, ET, TERMINALS> + Send + Sync, R, MD: DropWith<Edge<'id, N, ET>> + Send + Sync, const TERMINALS: usize> Send for Manager<'id, N, ET, TM, R, MD, TERMINALS>
impl<'id, N: NodeBase + InnerNode<Edge<'id, N, ET>> + Send + Sync, ET: Tag + Send + Sync, TM: TerminalManager<'id, N, ET, TERMINALS> + Send + Sync, R, MD: DropWith<Edge<'id, N, ET>> + Send + Sync, const TERMINALS: usize> Sync for Manager<'id, N, ET, TM, R, MD, TERMINALS>
Auto Trait Implementations§
impl<'id, N, ET, TM, R, MD, const TERMINALS: usize> !Freeze for Manager<'id, N, ET, TM, R, MD, TERMINALS>
impl<'id, N, ET, TM, R, MD, const TERMINALS: usize> !RefUnwindSafe for Manager<'id, N, ET, TM, R, MD, TERMINALS>
impl<'id, N, ET, TM, R, MD, const TERMINALS: usize> Unpin for Manager<'id, N, ET, TM, R, MD, TERMINALS>
impl<'id, N, ET, TM, R, MD, const TERMINALS: usize> !UnwindSafe for Manager<'id, N, ET, TM, R, MD, TERMINALS>
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