Skip to main content

LifecycleCallbacks

Trait LifecycleCallbacks 

Source
pub trait LifecycleCallbacks {
    // Provided methods
    fn on_configure(&mut self) -> TransitionResult { ... }
    fn on_activate(&mut self) -> TransitionResult { ... }
    fn on_deactivate(&mut self) -> TransitionResult { ... }
    fn on_cleanup(&mut self) -> TransitionResult { ... }
    fn on_shutdown(&mut self) -> TransitionResult { ... }
    fn on_error(&mut self) -> TransitionResult { ... }
}
Expand description

Safe lifecycle-callback surface, symmetric with the C++ nros::LifecycleNode (rclcpp LifecycleNodeInterface). Implement the transitions you need; the rest default to Success (on_error to Failure), matching rclcpp’s non-pure-virtual defaults. Register the node with Executor::register_lifecycle_node, which binds the five REP-2002 services and wires each transition here — no unsafe in user code.

§Example

struct MyNode { configured: bool }
impl LifecycleCallbacks for MyNode {
    fn on_configure(&mut self) -> TransitionResult {
        self.configured = true;
        TransitionResult::Success
    }
}
executor.register_lifecycle_node(&mut my_node)?;

Unlike rclcpp’s on_*(const State& previous), the callbacks take no previous argument: the FFI callback boundary (LifecycleCallbackFnCtx) carries only the user context, and the LifecyclePollingNode fn-pointer API is likewise state-less. Read the current state via Executor::lifecycle_state_machine .state() if a transition needs it.

Provided Methods§

Source

fn on_configure(&mut self) -> TransitionResult

Unconfigured -> Inactive. Default: Success.

Source

fn on_activate(&mut self) -> TransitionResult

Inactive -> Active. Default: Success.

Source

fn on_deactivate(&mut self) -> TransitionResult

Active -> Inactive. Default: Success.

Source

fn on_cleanup(&mut self) -> TransitionResult

Inactive -> Unconfigured. Default: Success.

Source

fn on_shutdown(&mut self) -> TransitionResult

any state -> Finalized. Default: Success.

Source

fn on_error(&mut self) -> TransitionResult

ErrorProcessing -> Unconfigured. Default: Failure (matching rclcpp).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§