Skip to main content

RuntimeError

Enum RuntimeError 

Source
#[non_exhaustive]
pub enum RuntimeError { NodeRegister(&'static str), Capability { name: &'static str, reason: &'static str, }, ExecutorFull(&'static str), Spin, }
Expand description

Error returned by the codegen-emitted run_plan(runtime) body (Phase 212.N.4) and by Node pkg register(runtime) wrappers (Phase 212.N.7 step-2).

no_std-safe — variants are string-typed so embedded Entry pkgs don’t need to pull thiserror/anyhow to print. The out-of-tree nros-build codegen library re-exports this type so emitted code references ::nros_platform::RuntimeError, NOT ::nros_build::RuntimeError — the embedded Entry pkg’s runtime path then doesn’t need nros-build as a runtime dep (build-dep only).

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

NodeRegister(&'static str)

A node’s register(runtime) call failed. The string carries the node pkg name.

Phase 212.N.12 hard-renamed the legacy ComponentRegister variant to NodeRegister to match the rclcpp_components / ROS 2 launch.xml <node pkg=…> convention.

§

Capability

issue 0460 — a CAPABILITY ([lifecycle], [param_services]) failed to register, with the reason.

Distinct from NodeRegister because reusing it forced the capability name to be the whole message: three Zephyr entries died reporting NodeRegister("lifecycle"), which says WHICH capability and nothing about WHY, and the image printed nothing else. Two static strings rather than a log call, because not every entry crate depends on log — the first attempt emitted ::log::error! from the macro and broke native_rust_qos_entry with cannot find 'log' in the crate root.

Fields

§name: &'static str

"lifecycle" / "param_services".

§reason: &'static str

Why registration failed, from the runtime that attempted it.

§

ExecutorFull(&'static str)

Issue 0095 — a node’s register failed specifically because the executor’s fixed callback-entry table (NROS_EXECUTOR_MAX_CBS) is full. Distinct from the opaque NodeRegister so the user sees the actionable knob. The string carries the node pkg name.

§

Spin

The hosted Entry spin loop failed or did not observe the requested runtime condition before its bounded test deadline.

Trait Implementations§

Source§

impl Debug for RuntimeError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for RuntimeError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.