pub struct Transition {
pub matcher: Matcher,
pub ref_marker: RefTransition,
pub nav: Nav,
pub successor_count: u32,
pub successor_data: [u32; 8],
/* private fields */
}Expand description
A single transition in the query graph.
Transitions use SSO (small-size optimization) for successors:
- 0-8 successors: stored inline in
successor_data - 9+ successors:
successor_data[0]is index into successors segment
Layout (64 bytes total, 64-byte aligned):
offset 0: matcher (16 bytes)
offset 16: ref_marker (4 bytes)
offset 20: nav (2 bytes)
offset 22: effects_len (2 bytes)
offset 24: successor_count (4 bytes)
offset 28: effects_start (4 bytes)
offset 32: successor_data (32 bytes)Fields§
§matcher: MatcherWhat this transition matches (node kind, wildcard, epsilon).
ref_marker: RefTransitionReference call/return marker for recursive definitions.
Navigation instruction (descend/ascend/sibling traversal).
successor_count: u32Number of successor transitions.
successor_data: [u32; 8]Successor storage (inline or spilled index).
- If
successor_count <= 8: containsTransitionIdvalues directly - If
successor_count > 8:successor_data[0]is index into successors segment
Implementations§
Source§impl Transition
impl Transition
Sourcepub fn new(
matcher: Matcher,
ref_marker: RefTransition,
nav: Nav,
effects: Slice<EffectOp>,
successor_count: u32,
successor_data: [u32; 8],
) -> Self
pub fn new( matcher: Matcher, ref_marker: RefTransition, nav: Nav, effects: Slice<EffectOp>, successor_count: u32, successor_data: [u32; 8], ) -> Self
Creates a new transition with all fields.
Sourcepub fn set_effects(&mut self, effects: Slice<EffectOp>)
pub fn set_effects(&mut self, effects: Slice<EffectOp>)
Sets the effects slice.
Sourcepub fn has_inline_successors(&self) -> bool
pub fn has_inline_successors(&self) -> bool
Returns true if successors are stored inline.
Sourcepub fn inline_successors(&self) -> Option<&[TransitionId]>
pub fn inline_successors(&self) -> Option<&[TransitionId]>
Returns inline successors if they fit, None if spilled.
Sourcepub fn spilled_successors_index(&self) -> u32
pub fn spilled_successors_index(&self) -> u32
Returns the spilled successor segment index and count. Panics if successors are inline.
Trait Implementations§
Source§impl Clone for Transition
impl Clone for Transition
Source§fn clone(&self) -> Transition
fn clone(&self) -> Transition
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for Transition
Auto Trait Implementations§
impl Freeze for Transition
impl RefUnwindSafe for Transition
impl Send for Transition
impl Sync for Transition
impl Unpin for Transition
impl UnwindSafe for Transition
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)