pub struct FeedbackStream<'a, A: RosAction, const GOAL_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const RESULT_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const FEEDBACK_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }> { /* 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: RosAction, const GOAL_BUF: usize, const RESULT_BUF: usize, const FEEDBACK_BUF: usize> FeedbackStream<'_, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<A: RosAction, const GOAL_BUF: usize, const RESULT_BUF: usize, const FEEDBACK_BUF: usize> FeedbackStream<'_, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
Sourcepub fn wait_next(
&mut self,
executor: &mut Executor<'_>,
timeout: Duration,
) -> Result<Option<(GoalUuid, A::Feedback)>, NodeError>
pub fn wait_next( &mut self, executor: &mut Executor<'_>, timeout: Duration, ) -> Result<Option<(GoalUuid, A::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 = { crate::config::DEFAULT_RX_BUF_SIZE }, const RESULT_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const FEEDBACK_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }> !RefUnwindSafe for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const RESULT_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const FEEDBACK_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }> !Send for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const RESULT_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const FEEDBACK_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }> !Sync for FeedbackStream<'a, A, GOAL_BUF, RESULT_BUF, FEEDBACK_BUF>
impl<'a, A, const GOAL_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const RESULT_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }, const FEEDBACK_BUF: usize = { crate::config::DEFAULT_RX_BUF_SIZE }> !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