run-loop-sender is an exposition-only type
that satisfies sender.
For any type Env,
completion_signatures_of_t<run-loop-sender, Env> is
completion_signatures<set_value_t(), set_error_t(exception_ptr), set_stopped_t()>
Let sndr be an expression of type run-loop-sender,
let rcvr be an expression
such that receiver_of<decltype((rcvr)), CS> is true
where CS is the completion_signatures specialization above.
The expression connect(sndr, rcvr)
has type run-loop-opstate<decay_t<decltype((rcvr))>>
and is potentially-throwing if and only if
(void(sndr), auto(rcvr)) is potentially-throwing.
The expression get_completion_scheduler<C>(get_env(sndr))
is potentially-throwing if and only if sndr is potentially-throwing,
has type run-loop-scheduler, and
compares equal to the run-loop- scheduler instance
from which sndr was obtained.
Let o be a non-const lvalue of type run-loop-opstate<Rcvr>,
and let REC(o) be a non-const lvalue reference to an instance of type Rcvr
that was initialized with the expression rcvr
passed to the invocation of connect that returned o.
The type run-loop-opstate<Rcvr> overrides
run-loop-opstate-base::execute()
such that o.execute() is equivalent to:
if(get_stop_token(REC(o)).stop_requested()){
set_stopped(std::move(REC(o)));
}else{
set_value(std::move(REC(o)));
}