pub struct FeedbackStream<'a, A, const GOAL_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#0}, const RESULT_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#1}, const FEEDBACK_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#2}>where
A: RosAction,{ /* private fields */ }Expand description
A stream of feedback messages from an action server.
Created by ActionClient::feedback_stream(). Receives feedback for
all active goals. The stream never self-terminates — use combinators
like take_while or break to stop.
Read it with wait_next(), which drives
the executor; the async recv() and the stream feature’s Stream
impl are retired (RFC-0113 D7).
Implementations§
Source§impl<A, const GOAL_BUF: usize, const RESULT_BUF: usize, const FEEDBACK_BUF: usize> FeedbackStream<'_, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>where
A: RosAction,
impl<A, const GOAL_BUF: usize, const RESULT_BUF: usize, const FEEDBACK_BUF: usize> FeedbackStream<'_, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>where
A: RosAction,
Sourcepub fn wait_next(
&mut self,
executor: &mut Executor<'_>,
timeout: Duration,
) -> Result<Option<(GoalUuid, <A as RosAction>::Feedback)>, NodeError>
pub fn wait_next( &mut self, executor: &mut Executor<'_>, timeout: Duration, ) -> Result<Option<(GoalUuid, <A as RosAction>::Feedback)>, NodeError>
Sync: wait for the next feedback message, spinning the executor.
Returns Ok(Some(feedback)) if a message arrives within timeout_ms,
or Ok(None) on timeout. Unlike Promise::wait(), timeout is not
an error — the caller typically retries in a loop.
Auto Trait Implementations§
impl<'a, A, const GOAL_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#0}, const RESULT_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#1}, const FEEDBACK_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#2}> !RefUnwindSafe for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#0}, const RESULT_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#1}, const FEEDBACK_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#2}> !Send for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#0}, const RESULT_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#1}, const FEEDBACK_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#2}> !Sync for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#0}, const RESULT_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#1}, const FEEDBACK_BUF: usize = nros_node::::executor::handles::FeedbackStream::{constant#2}> !UnwindSafe for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize, const RESULT_BUF: usize, const FEEDBACK_BUF: usize> Freeze for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize, const RESULT_BUF: usize, const FEEDBACK_BUF: usize> Unpin for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize, const RESULT_BUF: usize, const FEEDBACK_BUF: usize> UnsafeUnpin for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
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