Enum brane_ast::edgebuffer::EdgeBufferNodeLink
source · pub enum EdgeBufferNodeLink {
Linear(EdgeBufferNodePtr),
Branch(Option<EdgeBufferNodePtr>, Option<EdgeBufferNodePtr>, Option<EdgeBufferNodePtr>),
Parallel(Vec<EdgeBufferNodePtr>, EdgeBufferNodePtr),
Loop(EdgeBufferNodePtr, Option<EdgeBufferNodePtr>, Option<EdgeBufferNodePtr>),
End,
Stop,
None,
}
Expand description
Defines how one node links to the next and should thus be traversed.
Variants§
Linear(EdgeBufferNodePtr)
It’s a simple, linear link.
Branch(Option<EdgeBufferNodePtr>, Option<EdgeBufferNodePtr>, Option<EdgeBufferNodePtr>)
It’s a branching link (i.e., two options).
§Layout
0
: The edges that represent the true-branch if there is any.1
: The edges that represent the false-branch if there is any.2
: The edges that represent the joining edge, i.e., the first one after the branch. If there is none, that means that the branch is actually fully returning.
Parallel(Vec<EdgeBufferNodePtr>, EdgeBufferNodePtr)
It’s a parallel link (i.e., multiple ways taken concurrently).
§Layout
0
: The edges that represent the branches. Every pointer in the vector is a branch.1
: The edges that represent the joining edge.
Loop(EdgeBufferNodePtr, Option<EdgeBufferNodePtr>, Option<EdgeBufferNodePtr>)
It’s a repeating link (i.e., a given set of edges is taken repeatedly).
§Layout
0
: The edges that represent the condition-computation.1
: The edges that represent the repeated loop (unless there are no edges in it).2
: The edges that are taken after the loop (unless the while actually returns).
End
A special kind of connection that is not a placeholder but expliticly means “it just stops”.
Stop
A special kind of connection that is not a placeholder but really means ‘returns’.
None
No link (yet)
Implementations§
Trait Implementations§
source§impl Clone for EdgeBufferNodeLink
impl Clone for EdgeBufferNodeLink
source§fn clone(&self) -> EdgeBufferNodeLink
fn clone(&self) -> EdgeBufferNodeLink
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl Freeze for EdgeBufferNodeLink
impl !RefUnwindSafe for EdgeBufferNodeLink
impl !Send for EdgeBufferNodeLink
impl !Sync for EdgeBufferNodeLink
impl Unpin for EdgeBufferNodeLink
impl !UnwindSafe for EdgeBufferNodeLink
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request