pub trait ToRedChainVec<'db> {
// Required method
async fn to_red_chain_vec(
&self,
env: &mut Env<'db>,
live_after: LivePlaces,
direction: Direction,
consumer: Consumer<'_, 'db, Vec<RedChain<'db>>, Errors<()>>,
) -> Errors<()>;
}Expand description
Create a Vec<RedChain>, each of which are a canonical list of permissions.
Canonical means that
- inference variables have been bounded,
- permissions have been flattened into distinct chains (
ref[p, q] => ref[p], ref[q]), - copy applications reduced (
mut[p] ref[q] => ref[q]), - and tails expanded (
mut[q] => mut[q] mut[p], givenlet q: mut[p] String).
The consumer callback may be invoked multiple times as a result of
inference variable bounding. Each callback is given a vector
corresponding to the collected results from
some_expanded_red_chain in dada-model.
Required Methods§
async fn to_red_chain_vec( &self, env: &mut Env<'db>, live_after: LivePlaces, direction: Direction, consumer: Consumer<'_, 'db, Vec<RedChain<'db>>, Errors<()>>, ) -> Errors<()>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.