#[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
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
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.