pub struct RemainingSteps { /* private fields */ }Expand description
Remaining steps tracker for recursion limit
Tracks and manages the remaining execution steps to prevent infinite loops. This is actively decremented during execution and can be checked by nodes.
§Example
ⓘ
let remaining = RemainingSteps::new(100);
// Check before proceeding
if remaining.is_exhausted() {
return Err(AgentError::RecursionLimitExceeded);
}
// Decrement after each step
remaining.decrement();Implementations§
Source§impl RemainingSteps
impl RemainingSteps
Sourcepub fn new(max: u32) -> RemainingSteps
pub fn new(max: u32) -> RemainingSteps
Create a new remaining steps tracker
Sourcepub async fn decrement_by(&self, amount: u32) -> u32
pub async fn decrement_by(&self, amount: u32) -> u32
Decrement by a specific amount
Sourcepub async fn is_exhausted(&self) -> bool
pub async fn is_exhausted(&self) -> bool
Check if steps are exhausted
Sourcepub async fn has_at_least(&self, n: u32) -> bool
pub async fn has_at_least(&self, n: u32) -> bool
Check if we have at least N steps remaining
Trait Implementations§
Source§impl Clone for RemainingSteps
impl Clone for RemainingSteps
Source§fn clone(&self) -> RemainingSteps
fn clone(&self) -> RemainingSteps
Returns a duplicate 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 RemainingSteps
impl !RefUnwindSafe for RemainingSteps
impl Send for RemainingSteps
impl Sync for RemainingSteps
impl Unpin for RemainingSteps
impl UnsafeUnpin for RemainingSteps
impl !UnwindSafe for RemainingSteps
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> 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> 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 moreSource§impl<T> Message for T
impl<T> Message for T
Source§fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
Convert a BoxedMessage to this concrete type
Source§fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
Convert this message to a BoxedMessage