Skip to main content

CuBudget

Struct CuBudget 

Source
pub struct CuBudget { /* private fields */ }
Expand description

Compute-unit budget tracker.

On BPF, uses sol_log_compute_units() to read the remaining budget. Off-chain, all operations are no-ops that succeed.

Implementations§

Source§

impl CuBudget

Source

pub fn snapshot() -> Self

Take a snapshot of the current compute budget.

On BPF this calls sol_log_compute_units() and captures the remaining CU from the log output. On native (off-chain), the snapshot is 0 and all checks pass trivially.

Source

pub fn checkpoint()

Log the current compute unit consumption for profiling.

Emits via sol_log_compute_units on BPF. Use this to instrument hot paths and identify CU bottlenecks.

Source

pub fn require_remaining(&self, _min_remaining: u64) -> ProgramResult

Assert that at least min_remaining CU are available.

On BPF, this is a conservative check: the Solana runtime does not expose a “get remaining CU” syscall, so this method logs the current usage and returns Ok. The real enforcement is that the runtime itself will abort if CU is exhausted.

The value of this method is that it makes the CU concern VISIBLE in the code and provides a hook point for future runtime features that may expose remaining CU programmatically.

Off-chain, this always returns Ok.

Source

pub fn log_delta(&self, label: &str)

Log CU consumed since the snapshot.

Emits a structured log that off-chain tools can parse. Format: "cu-delta: <label>"

Trait Implementations§

Source§

impl Clone for CuBudget

Source§

fn clone(&self) -> CuBudget

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 Copy for CuBudget

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.