Preview of the proposed up-rust native-frame-model branch (up-rust b6b99c6d, up-spec f0e9b17) — not released documentation. branch · write-up

Trait StablePayloadInit

Source
pub unsafe trait StablePayloadInit: StablePayload {
    type Init<'a>;

    // Provided methods
    fn init_from_uninit_bytes<'a>(
        payload: &'a mut [MaybeUninit<u8>],
    ) -> Result<Self::Init<'a>, UWireError> { ... }
    fn init_from_uninit_payload<'a>(
        payload: LoanedPayloadUninitMut<'a>,
    ) -> Result<Self::Init<'a>, UWireError> { ... }
}
Expand description

Safe generated initialization proof for stable-container payloads.

Derived implementations initialize one stable payload directly in uninitialized storage. Generated builders expose named typed setters and make finish() available only after all required fields are set. Implementations must also initialize any implicit and trailing padding bytes they own without blanket-zeroing the full payload.

§Safety

Implementors must guarantee that every successful finish() for Self::Init returns only after the full transported size_of::<Self>() byte range, including implicit padding, contains one valid initialized Self in the stable-container representation. Ordinary payload types should use the derive macro; manual implementations are an expert unsafe extension point.

Required Associated Types§

Source

type Init<'a>

Generated any-order typestate initializer for this payload type.

Provided Methods§

Source

fn init_from_uninit_bytes<'a>( payload: &'a mut [MaybeUninit<u8>], ) -> Result<Self::Init<'a>, UWireError>

Creates a generated initializer from an exact uninitialized payload range.

§Errors

Returns an error if the byte range does not match this stable payload’s size and alignment.

Source

fn init_from_uninit_payload<'a>( payload: LoanedPayloadUninitMut<'a>, ) -> Result<Self::Init<'a>, UWireError>

Creates a generated initializer from a transport loan’s visible payload range.

§Errors

Returns an error if the payload range does not match this stable payload’s size and alignment.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl StablePayloadInit for Ars548DetectionV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForArs548DetectionV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for BenchHeaderV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForBenchHeaderV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for CameraBayerRggb12pFrame8mpV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForCameraBayerRggb12pFrame8mpV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for CameraIntrinsicsV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForCameraIntrinsicsV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for CanClassicFrameV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForCanClassicFrameV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for CanFdFrameV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForCanFdFrameV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for LidarPointCloudHesaiAt128V1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForLidarPointCloudHesaiAt128V1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for LidarPointXyzircaedtV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForLidarPointXyzircaedtV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for Pose3dV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForPose3dV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for QuaternionfV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForQuaternionfV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for RadarDetectionListArs548V1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForRadarDetectionListArs548V1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for RoiV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForRoiV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for SignalSampleV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForSignalSampleV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for SomeIpSignalBatchMtuV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForSomeIpSignalBatchMtuV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for StreamChunk4kV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForStreamChunk4kV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for StreamChunk64kV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForStreamChunk64kV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for StreamChunkHeaderV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForStreamChunkHeaderV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for Vector3fV1

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForVector3fV1<'__up_rust_payload, StablePayloadInitUnset, StablePayloadInitUnset, StablePayloadInitUnset>

Source§

impl StablePayloadInit for StableTestBytes

Source§

type Init<'__up_rust_payload> = __UpRustStablePayloadInitForStableTestBytes<'__up_rust_payload, StablePayloadInitUnset>