pub trait ZipAnyExt: Interface {
    type E: Interface;

    // Required method
    fn zip_any(self) -> Self::E;
}
Expand description

Extension trait for zip_any.

Required Associated Types§

source

type E: Interface

Egress interface.

Required Methods§

source

fn zip_any(self) -> Self::E

Zip-any.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<H1: Hazard, H2: Hazard, H3: Hazard, const D: Dep> ZipAnyExt for (I<H1, D>, I<H2, D>, I<H3, D>)

source§

fn zip_any(self) -> I<ZipAny3H<H1, H2, H3>, D>

A variation of zip_any for 3 hazard interfaces. See the 2-tuple version for more information.

§

type E = I<ZipAny3H<H1, H2, H3>, D>

source§

impl<H1: Hazard, H2: Hazard, const D: Dep> ZipAnyExt for (I<H1, D>, I<H2, D>)

source§

fn zip_any(self) -> I<ZipAnyH<H1, H2>, D>

Zips any of the two hazard interfaces.

Ingress transfers and an egress transfer happen as soon as any of the ingress transfer conditions are satisfied. Note that the ingress transfers happen only for the interfaces whose transfer condition is satisfied.

To achieve this, the egress interface’s hazard is ZipAnyH with ready condition “any of the ingress interfaces’ transfer conditions are true”.

  • Payloads: Wrapped in another HOption. The outer HOption is Some if any of the payloads are Some.
  • Resolver: Preserved.
InterfaceIngressEgress
Fwd(HOption<H1::P>, HOption<H2::P>)HOption<(HOption<H1::P>, HOption<H2::P>)>
Bwd(H1::R, H2::R)(H1::R, H2::R)
§

type E = I<ZipAnyH<H1, H2>, D>

Implementors§