pub fn async_source<G, D, B, L>(
    scope: &G,
    name: String,
    input: &Stream<G, ()>,
    construct: B
) -> (Stream<G, D>, Rc<dyn Any>)where
    G: Scope<Timestamp = Timestamp>,
    D: Data,
    B: FnOnce(OperatorInfo, CapabilitySet<Timestamp>, AsyncInputHandle<Timestamp, Vec<()>, <Pipeline as ParallelizationContractCore<G::Timestamp, Vec<()>>>::Puller>, OutputWrapper<G::Timestamp, Vec<D>, TeeCore<G::Timestamp, Vec<D>>>) -> L,
    L: Future + 'static,
Expand description

Effectively the same as source, but the core logic expects a never-ending future, not a tick closure. Additionally, this operator also contains an input, primarily to inspect the frontier of an upstream operator. This input does not participate in progress tracking.

Note that this means the input and capabilities are communicated to the future by value, not by &mut reference.

Returns a token, which, upon drop, will cause the shutdown of the operator.