pub struct Function<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> { /* private fields */ }Implementations§
Source§impl<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> Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> Function<NC, ET, TMC, RC, MDC, TERMINALS>
Sourcepub fn into_raw(self) -> (*const c_void, u32)
pub fn into_raw(self) -> (*const c_void, u32)
Convert self into a raw pointer and edge value, e.g., for usage in a
foreign function interface.
This method does not change any reference counters. To avoid a memory
leak, use Self::from_raw() to convert pointer and edge value back
into a Function.
Sourcepub unsafe fn from_raw(ptr: *const c_void, edge_val: u32) -> Self
pub unsafe fn from_raw(ptr: *const c_void, edge_val: u32) -> Self
Convert ptr and edge_val into a Function
§Safety
raw and edge_val must have been obtained via Self::into_raw().
This function does not change any reference counters, so calling this
function multiple times for the same pointer may lead to use after free
bugs depending on the usage of the returned Function.
Trait Implementations§
Source§impl<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> Clone for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> Clone for Function<NC, ET, TMC, RC, MDC, TERMINALS>
Source§impl<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> Drop for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> Drop for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> Eq for Function<NC, ET, TMC, RC, MDC, TERMINALS>
Source§impl<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> Function for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> Function for Function<NC, ET, TMC, RC, MDC, TERMINALS>
Source§type Manager<'id> = 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>
type Manager<'id> = 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>
Type of the associated manager Read more
Source§type ManagerRef = ManagerRef<NC, ET, TMC, RC, MDC, TERMINALS>
type ManagerRef = ManagerRef<NC, ET, TMC, RC, MDC, TERMINALS>
Source§fn from_edge<'id>(
manager: &Self::Manager<'id>,
edge: EdgeOfFunc<'id, Self>,
) -> Self
fn from_edge<'id>( manager: &Self::Manager<'id>, edge: EdgeOfFunc<'id, Self>, ) -> Self
Create a new function from a manager reference and an edge
Source§fn as_edge<'id>(&self, manager: &Self::Manager<'id>) -> &EdgeOfFunc<'id, Self>
fn as_edge<'id>(&self, manager: &Self::Manager<'id>) -> &EdgeOfFunc<'id, Self>
Converts this function into the underlying edge (as reference), checking
that it belongs to the given
manager Read moreSource§fn into_edge<'id>(self, manager: &Self::Manager<'id>) -> EdgeOfFunc<'id, Self>
fn into_edge<'id>(self, manager: &Self::Manager<'id>) -> EdgeOfFunc<'id, Self>
Converts this function into the underlying edge, checking that it
belongs to the given
manager Read moreSource§fn manager_ref(&self) -> Self::ManagerRef
fn manager_ref(&self) -> Self::ManagerRef
Clone the
ManagerRef partObtain a shared manager reference as well as the underlying edge Read more
Source§fn with_manager_exclusive<F, T>(&self, f: F) -> T
fn with_manager_exclusive<F, T>(&self, f: F) -> T
Obtain an exclusive manager reference as well as the underlying edge Read more
Source§fn from_edge_ref<'id>(
manager: &Self::Manager<'id>,
edge: &<Self::Manager<'id> as Manager>::Edge,
) -> Self
fn from_edge_ref<'id>( manager: &Self::Manager<'id>, edge: &<Self::Manager<'id> as Manager>::Edge, ) -> Self
Create a new function from a manager reference and an edge reference
Source§fn node_count(&self) -> usize
fn node_count(&self) -> usize
Count the number of nodes in this function, including terminal nodes Read more
Source§impl<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> Hash for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> Hash for Function<NC, ET, TMC, RC, MDC, TERMINALS>
Source§impl<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> Ord for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> Ord for Function<NC, ET, TMC, RC, MDC, TERMINALS>
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<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> PartialEq for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> PartialEq for Function<NC, ET, TMC, RC, MDC, TERMINALS>
Source§impl<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> PartialOrd for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<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> PartialOrd for Function<NC, ET, TMC, RC, MDC, TERMINALS>
Auto Trait Implementations§
impl<NC, ET, TMC, RC, MDC, const TERMINALS: usize> !RefUnwindSafe for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<NC, ET, TMC, RC, MDC, const TERMINALS: usize> !UnwindSafe for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<NC, ET, TMC, RC, MDC, const TERMINALS: usize> Freeze for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<NC, ET, TMC, RC, MDC, const TERMINALS: usize> Send for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<NC, ET, TMC, RC, MDC, const TERMINALS: usize> Sync for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<NC, ET, TMC, RC, MDC, const TERMINALS: usize> Unpin for Function<NC, ET, TMC, RC, MDC, TERMINALS>
impl<NC, ET, TMC, RC, MDC, const TERMINALS: usize> UnsafeUnpin for Function<NC, ET, TMC, RC, MDC, 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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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