BlockType

Enum BlockType 

Source
pub enum BlockType {
Show 52 variants Entry, Exit, Branch, LoopHeader, LoopBody, Return, Body, Exception, Finally, TryOperator, ErrorReturn, PanicSite, PatternMatch, Closure, DeferredCall, RecoverCall, ErrorCheck, GoPanicSite, GoroutineSpawn, ChannelSend, ChannelReceive, SelectBlock, SelectCase, MutexLock, MutexUnlock, WaitGroupWait, WaitGroupOp, OnceCall, ChannelMake, ChannelClose, ContextCheck, AwaitPoint, AsyncForLoop, AsyncWithBlock, TaskSpawn, PromiseThen, PromiseCatch, PromiseFinally, PromiseAll, PromiseRace, PromiseAllSettled, PromiseAny, AsyncGeneratorYield, ForAwaitOf, RustAwaitPoint, RustTaskSpawn, RustJoin, RustSelect, RustSelectBranch, RustBlockingCall, RustLockAcrossAwait, RustAsyncBlock,
}
Expand description

Type of a basic block in the control flow graph.

Categorizes blocks by their role in the control flow:

  • Entry/Exit: Function boundaries
  • Branch: Conditional decision points
  • LoopHeader/LoopBody: Loop constructs
  • Return: Explicit return statements
  • Body: Regular sequential code
  • Exception/Finally: Error handling constructs
  • TryOperator/ErrorReturn/PanicSite: Rust Result/Option handling

Variants§

§

Entry

Function entry point

§

Exit

Function exit point

§

Branch

Conditional branch (if, elif, match case)

§

LoopHeader

Loop header (condition evaluation)

§

LoopBody

Loop body

§

Return

Return statement block

§

Body

Regular code block (default)

§

Exception

Exception handler (except, catch)

§

Finally

Finally block

§

TryOperator

Rust ? operator - may propagate error/none (Result/Option)

§

ErrorReturn

Rust early return from ? operator on Err/None

§

PanicSite

Potential panic site (.unwrap(), .expect(), panic!(), unreachable!(), todo!())

§

PatternMatch

Pattern match block (if let, while let, match arm)

§

Closure

Closure body (separate control flow context)

§

DeferredCall

Go: Deferred function call (executes on function exit in LIFO order)

§

RecoverCall

Go: Recover call site (recover() in deferred function)

§

ErrorCheck

Go: Error check pattern (if err != nil { return err })

§

GoPanicSite

Go: Panic site (explicit panic() or potential runtime panic)

§

GoroutineSpawn

Go: Goroutine spawn (go func() {…} or go existingFunc())

§

ChannelSend

Go: Channel send operation (ch <- value) - may block

§

ChannelReceive

Go: Channel receive operation (val := <-ch or <-ch) - may block

§

SelectBlock

Go: Select statement block (multi-way channel operation)

§

SelectCase

Go: Select case (case <-ch: or case ch <-:)

§

MutexLock

Go: Mutex lock operation (mu.Lock() or mu.RLock())

§

MutexUnlock

Go: Mutex unlock operation (mu.Unlock() or mu.RUnlock())

§

WaitGroupWait

Go: WaitGroup wait operation (wg.Wait()) - synchronization point

§

WaitGroupOp

Go: WaitGroup add/done operation (wg.Add(), wg.Done())

§

OnceCall

Go: sync.Once.Do() call - one-time initialization

§

ChannelMake

Go: Channel make/creation (make(chan T) or make(chan T, size))

§

ChannelClose

Go: Channel close operation (close(ch))

§

ContextCheck

Go: Context cancellation check (ctx.Done(), ctx.Err())

§

AwaitPoint

Python: Await expression - suspension point where execution yields to event loop

§

AsyncForLoop

Python: Async for loop header

§

AsyncWithBlock

Python: Async with block (async context manager)

§

TaskSpawn

Python: Task spawn point (asyncio.create_task, asyncio.gather, etc.)

§

PromiseThen

JS/TS: Promise.then() callback block - executes on promise resolution

§

PromiseCatch

JS/TS: Promise.catch() callback block - executes on promise rejection

§

PromiseFinally

JS/TS: Promise.finally() callback block - executes regardless of outcome

§

PromiseAll

JS/TS: Promise.all() - parallel execution, waits for all promises

§

PromiseRace

JS/TS: Promise.race() - parallel execution, resolves with first settled

§

PromiseAllSettled

JS/TS: Promise.allSettled() - parallel execution, waits for all to settle

§

PromiseAny

JS/TS: Promise.any() - parallel execution, resolves with first fulfilled

§

AsyncGeneratorYield

JS/TS: Async generator yield point (yield* in async generator)

§

ForAwaitOf

JS/TS: for await…of loop header (async iteration)

§

RustAwaitPoint

Rust: Await expression (.await) - suspension point where Future yields Critical for tracking async state machine transitions and cancellation safety.

§

RustTaskSpawn

Rust: Task spawn point (tokio::spawn, async_std::spawn, etc.) Creates a concurrent task that runs independently.

§

RustJoin

Rust: tokio::join! - concurrent execution, waits for all futures All branches run concurrently, function continues when all complete.

§

RustSelect

Rust: tokio::select! - concurrent execution, first completion wins All branches race, first to complete is taken, others are cancelled.

§

RustSelectBranch

Rust: select! branch (individual arm in select!)

§

RustBlockingCall

Rust: Blocking call in async context (std::thread::sleep, blocking I/O) ANTI-PATTERN: Blocks the executor thread, starving other tasks.

§

RustLockAcrossAwait

Rust: Lock held across await (MutexGuard, RwLockGuard across .await) ANTI-PATTERN: Causes deadlocks and breaks Send bounds.

§

RustAsyncBlock

Rust: Async block (async { … }) - creates anonymous Future

Trait Implementations§

Source§

impl Clone for BlockType

Source§

fn clone(&self) -> BlockType

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BlockType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BlockType

Source§

fn default() -> BlockType

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for BlockType

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for BlockType

Source§

fn eq(&self, other: &BlockType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for BlockType

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for BlockType

Source§

impl Eq for BlockType

Source§

impl StructuralPartialEq for BlockType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,