up_rust/frame/mod.rs
1// SPDX-License-Identifier: Apache-2.0
2//! # The UFrame data layer
3//!
4//! Everything about frames-as-data lives here, independent of any transport:
5//!
6//! - [`metadata`](crate::frame::metadata) — [`UFrameMetadata`](crate::UFrameMetadata), the
7//! family-invariant semantic metadata model, plus
8//! [`PayloadEncoding`](crate::PayloadEncoding) identity and the fallible
9//! projections to and from `UMessage` attributes.
10//! - [`codec`](crate::frame::codec) — the canonical metadata field-block profile: how metadata
11//! becomes bytes under a metadata profile.
12//! - `envelope` — complete-frame `UPFE` serialization, available with
13//! `owned-frame-transport`, for transports that
14//! carry metadata and payload in one byte envelope. Selected-wire `UPWM`
15//! profile prefixes are owned by the wire adapter, not this module.
16//! - [`abi`](crate::frame::abi) — `UFrameMetadataAbiV1`, the fixed-layout `#[repr(C)]` profile
17//! for cross-language shared-memory boundaries. NOTE: its consumers are
18//! C/C++ peers; zero Rust references is its expected steady state.
19//!
20//! Spec: `up-spec/basics/uframe.adoc` and
21//! `up-spec/up-l1/transport_families.adoc`.
22
23pub mod view;
24pub use view::{validate_frame_view_for_transport, UFrameView};
25pub mod abi;
26pub mod codec;
27#[cfg(feature = "owned-frame-transport")]
28pub mod envelope;
29pub mod metadata;