Trait DynamicSend

Source
pub unsafe trait DynamicSend: Send + Sealed {
    type Inner;

    // Required method
    fn extract_if_safe(self) -> Option<Self::Inner>;
}
Available on since_api="4.2" only.
Expand description

Runtime-checked Send capability.

Implemented for types that need a static Send bound, but where it is determined at runtime whether sending a value was actually safe. Only allows to extract the value if sending across threads is safe, thus fulfilling the Send supertrait.

§Safety

The implementor has to guarantee that extract_if_safe returns None, if the value has been sent between threads while being !Send.

To uphold the Send supertrait guarantees, no public API apart from extract_if_safe must exist that would give access to the inner value from another thread.

Required Associated Types§

Required Methods§

Implementations on Foreign Types§

Source§

impl DynamicSend for bool

Source§

impl DynamicSend for f32

Source§

impl DynamicSend for f64

Source§

impl DynamicSend for i8

Source§

impl DynamicSend for i16

Source§

impl DynamicSend for i32

Source§

impl DynamicSend for i64

Source§

impl DynamicSend for u8

Source§

impl DynamicSend for u16

Source§

impl DynamicSend for u32

Source§

impl DynamicSend for u64

Source§

impl DynamicSend for ()

Source§

impl<A1: DynamicSend> DynamicSend for (A1,)

Source§

type Inner = (<A1 as DynamicSend>::Inner,)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend> DynamicSend for (A1, A2)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend, A3: DynamicSend> DynamicSend for (A1, A2, A3)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner, <A3 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend, A3: DynamicSend, A4: DynamicSend> DynamicSend for (A1, A2, A3, A4)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner, <A3 as DynamicSend>::Inner, <A4 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend, A3: DynamicSend, A4: DynamicSend, A5: DynamicSend> DynamicSend for (A1, A2, A3, A4, A5)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner, <A3 as DynamicSend>::Inner, <A4 as DynamicSend>::Inner, <A5 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend, A3: DynamicSend, A4: DynamicSend, A5: DynamicSend, A6: DynamicSend> DynamicSend for (A1, A2, A3, A4, A5, A6)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner, <A3 as DynamicSend>::Inner, <A4 as DynamicSend>::Inner, <A5 as DynamicSend>::Inner, <A6 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend, A3: DynamicSend, A4: DynamicSend, A5: DynamicSend, A6: DynamicSend, A7: DynamicSend> DynamicSend for (A1, A2, A3, A4, A5, A6, A7)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner, <A3 as DynamicSend>::Inner, <A4 as DynamicSend>::Inner, <A5 as DynamicSend>::Inner, <A6 as DynamicSend>::Inner, <A7 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend, A3: DynamicSend, A4: DynamicSend, A5: DynamicSend, A6: DynamicSend, A7: DynamicSend, A8: DynamicSend> DynamicSend for (A1, A2, A3, A4, A5, A6, A7, A8)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner, <A3 as DynamicSend>::Inner, <A4 as DynamicSend>::Inner, <A5 as DynamicSend>::Inner, <A6 as DynamicSend>::Inner, <A7 as DynamicSend>::Inner, <A8 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Source§

impl<A1: DynamicSend, A2: DynamicSend, A3: DynamicSend, A4: DynamicSend, A5: DynamicSend, A6: DynamicSend, A7: DynamicSend, A8: DynamicSend, A9: DynamicSend> DynamicSend for (A1, A2, A3, A4, A5, A6, A7, A8, A9)

Source§

type Inner = (<A1 as DynamicSend>::Inner, <A2 as DynamicSend>::Inner, <A3 as DynamicSend>::Inner, <A4 as DynamicSend>::Inner, <A5 as DynamicSend>::Inner, <A6 as DynamicSend>::Inner, <A7 as DynamicSend>::Inner, <A8 as DynamicSend>::Inner, <A9 as DynamicSend>::Inner)

Source§

fn extract_if_safe(self) -> Option<Self::Inner>

Implementors§