pub struct TargetsConfig {
pub dev: Option<TargetEntry>,
pub simulation: Option<TargetEntry>,
pub robot: Option<TargetEntry>,
pub remote: Option<TargetEntry>,
pub rl: Option<TargetEntry>,
}Expand description
Target execution configuration - defines where nodes run and, for the robot/remote
targets, which Rust target triple(s) mecha10 build compiles for.
Nodes can run locally on a developer’s machine (dev), in a simulated environment
(simulation), on the robot (as local processes, robot), or remotely (in Docker
containers, remote) - the canonical targets documented in TERMS.md.
Example:
{
"targets": {
"dev": { "nodes": ["@mecha10/simulator"] },
"simulation": { "nodes": ["@mecha10/simulator"] },
"robot": { "nodes": ["@mecha10/motor", "@mecha10/camera"], "platforms": ["aarch64-unknown-linux-gnu"] },
"remote": { "nodes": ["@mecha10/object-detector"], "platforms": ["x86_64-unknown-linux-gnu"] }
}
}Fields§
§dev: Option<TargetEntry>Nodes that run locally on the developer’s machine, in-process, via mecha10 dev
simulation: Option<TargetEntry>Nodes that run in a simulated environment
robot: Option<TargetEntry>Nodes that run on the robot as local processes, typically hardware drivers and low-latency control nodes
remote: Option<TargetEntry>Nodes that run remotely in Docker containers, typically AI/ML nodes with platform-specific dependencies
rl: Option<TargetEntry>Nodes that run a trained RL policy in production, in Docker containers - modeled on
remote, but excludes @mecha10/simulator (training runs against the simulator; running
a trained policy in production should not).
Implementations§
Source§impl TargetsConfig
impl TargetsConfig
Sourcepub fn nodes_for(&self, target: &str) -> &[String]
pub fn nodes_for(&self, target: &str) -> &[String]
Nodes configured for the given target key ("dev"/"simulation"/"robot"/"remote"),
or an empty slice when that target isn’t configured at all.
Sourcepub fn present_entries(&self) -> Vec<(&'static str, &[String])>
pub fn present_entries(&self) -> Vec<(&'static str, &[String])>
The (name, nodes) pairs for every target key that’s actually configured (i.e. present
in the source mecha10.json, even with an empty nodes list) - "dev"/"simulation"/
"robot"/"remote"/"rl" that were omitted entirely are excluded.
Trait Implementations§
Source§impl Clone for TargetsConfig
impl Clone for TargetsConfig
Source§fn clone(&self) -> TargetsConfig
fn clone(&self) -> TargetsConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TargetsConfig
impl Debug for TargetsConfig
Source§impl Default for TargetsConfig
impl Default for TargetsConfig
Source§fn default() -> TargetsConfig
fn default() -> TargetsConfig
Source§impl<'de> Deserialize<'de> for TargetsConfig
impl<'de> Deserialize<'de> for TargetsConfig
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<TargetsConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<TargetsConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for TargetsConfig
impl Serialize for TargetsConfig
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for TargetsConfig
impl RefUnwindSafe for TargetsConfig
impl Send for TargetsConfig
impl Sync for TargetsConfig
impl Unpin for TargetsConfig
impl UnsafeUnpin for TargetsConfig
impl UnwindSafe for TargetsConfig
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.