Skip to main content

PyOutputSpec

Trait PyOutputSpec 

Source
pub trait PyOutputSpec {
    type Output<'m>: CuMsgPayload
       where Self: 'm;
    type Owned: Clone + Serialize + DeserializeOwned;

    // Required methods
    fn to_owned(output: &Self::Output<'_>) -> Self::Owned;
    fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned);
}
Expand description

Describes how a Python-backed task exposes Copper outputs.

Outputs are converted into mutable owned values before calling Python, then written back into Copper message slots after the Python function returns.

Required Associated Types§

Required Methods§

Source

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl PyOutputSpec for ()

Source§

type Output<'m> = () where Self: 'm

Source§

type Owned = ()

Source§

fn to_owned(_output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(_output: &mut Self::Output<'_>, _owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> PyOutputSpec for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>, CuStampedData<T6, CuMsgMetadata>, CuStampedData<T7, CuMsgMetadata>, CuStampedData<T8, CuMsgMetadata>, CuStampedData<T9, CuMsgMetadata>, CuStampedData<T10, CuMsgMetadata>, CuStampedData<T11, CuMsgMetadata>, CuStampedData<T12, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>, PyCuMsg<T6>, PyCuMsg<T7>, PyCuMsg<T8>, PyCuMsg<T9>, PyCuMsg<T10>, PyCuMsg<T11>, PyCuMsg<T12>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> PyOutputSpec for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>, CuStampedData<T6, CuMsgMetadata>, CuStampedData<T7, CuMsgMetadata>, CuStampedData<T8, CuMsgMetadata>, CuStampedData<T9, CuMsgMetadata>, CuStampedData<T10, CuMsgMetadata>, CuStampedData<T11, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>, PyCuMsg<T6>, PyCuMsg<T7>, PyCuMsg<T8>, PyCuMsg<T9>, PyCuMsg<T10>, PyCuMsg<T11>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> PyOutputSpec for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>, CuStampedData<T6, CuMsgMetadata>, CuStampedData<T7, CuMsgMetadata>, CuStampedData<T8, CuMsgMetadata>, CuStampedData<T9, CuMsgMetadata>, CuStampedData<T10, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>, PyCuMsg<T6>, PyCuMsg<T7>, PyCuMsg<T8>, PyCuMsg<T9>, PyCuMsg<T10>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> PyOutputSpec for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>, CuStampedData<T6, CuMsgMetadata>, CuStampedData<T7, CuMsgMetadata>, CuStampedData<T8, CuMsgMetadata>, CuStampedData<T9, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>, PyCuMsg<T6>, PyCuMsg<T7>, PyCuMsg<T8>, PyCuMsg<T9>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8> PyOutputSpec for (T1, T2, T3, T4, T5, T6, T7, T8)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>, CuStampedData<T6, CuMsgMetadata>, CuStampedData<T7, CuMsgMetadata>, CuStampedData<T8, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>, PyCuMsg<T6>, PyCuMsg<T7>, PyCuMsg<T8>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5, T6, T7> PyOutputSpec for (T1, T2, T3, T4, T5, T6, T7)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>, CuStampedData<T6, CuMsgMetadata>, CuStampedData<T7, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>, PyCuMsg<T6>, PyCuMsg<T7>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5, T6> PyOutputSpec for (T1, T2, T3, T4, T5, T6)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>, CuStampedData<T6, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>, PyCuMsg<T6>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4, T5> PyOutputSpec for (T1, T2, T3, T4, T5)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>, CuStampedData<T5, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>, PyCuMsg<T5>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3, T4> PyOutputSpec for (T1, T2, T3, T4)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>, CuStampedData<T4, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>, PyCuMsg<T4>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2, T3> PyOutputSpec for (T1, T2, T3)

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>, CuStampedData<T3, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>, PyCuMsg<T3>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T1, T2> PyOutputSpec for (T1, T2)
where T1: CuMsgPayload, T2: CuMsgPayload,

Source§

type Output<'m> = (CuStampedData<T1, CuMsgMetadata>, CuStampedData<T2, CuMsgMetadata>) where Self: 'm

Source§

type Owned = (PyCuMsg<T1>, PyCuMsg<T2>)

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Source§

impl<T> PyOutputSpec for (T,)
where T: CuMsgPayload,

Source§

type Output<'m> = CuStampedData<T, CuMsgMetadata> where Self: 'm

Source§

type Owned = PyCuMsg<T>

Source§

fn to_owned(output: &Self::Output<'_>) -> Self::Owned

Source§

fn replace_output(output: &mut Self::Output<'_>, owned: Self::Owned)

Implementors§