pub struct RetryNode { /* private fields */ }Expand description
Re-runs its child up to max_attempts times whenever it fails, succeeding as soon as one
attempt succeeds; only reports Failure once every attempt has been exhausted. The
complement of RepeatNode (which loops on success) - for flaky/best-effort actions like a
detection scan that may need a few tries (e.g. capture-target’s “take a picture of a
uniquely-found target”).
Implementations§
Trait Implementations§
Source§impl BehaviorNode for RetryNode
impl BehaviorNode for RetryNode
Source§fn tick<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
RetryNode: 'async_trait,
fn tick<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
RetryNode: 'async_trait,
Execute one tick of the behavior. Read more
Source§fn reset_self(&mut self)
fn reset_self(&mut self)
Reset this node’s own local state, ignoring children. Read more
Source§fn children_mut(&mut self) -> Vec<&mut dyn BehaviorNode>
fn children_mut(&mut self) -> Vec<&mut dyn BehaviorNode>
Return mutable references to this node’s child behaviors, in the order
they should receive lifecycle events. Read more
Source§fn active_capability(&self) -> Option<&str>
fn active_capability(&self) -> Option<&str>
The
capability this node implies should be published on /behavior/status while it’s
the one actively being ticked (e.g. rl_task’s hardcoded "rl", gating RlNode::is_active()
on the rl node crate’s side) - None for a node with no such gate (the default, correct
for the vast majority of leaves and for a composite with no currently-active child). Read moreSource§fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Reset the behavior to its initial state. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for RetryNode
impl !UnwindSafe for RetryNode
impl Freeze for RetryNode
impl Send for RetryNode
impl Sync for RetryNode
impl Unpin for RetryNode
impl UnsafeUnpin for RetryNode
Blanket Implementations§
Source§impl<T> BehaviorNodeExt for Twhere
T: BehaviorNode + ?Sized,
impl<T> BehaviorNodeExt for Twhere
T: BehaviorNode + ?Sized,
Source§fn run_until_complete<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
fn run_until_complete<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
Run this behavior until it completes (Success or Failure). Read more
Source§fn run_with_limit<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
max_ticks: usize,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
fn run_with_limit<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
max_ticks: usize,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
Run this behavior with a maximum number of ticks. Read more
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> 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 more