Skip to main content

ToRedLinkVecs

Trait ToRedLinkVecs 

Source
pub trait ToRedLinkVecs<'db> {
    // Required method
    async fn to_red_linkvecs(
        &self,
        env: &mut Env<'db>,
        live_after: LivePlaces,
        direction: Direction,
        consumer: Consumer<'_, 'db, Vec<Vec<RedLink<'db>>>, Errors<()>>,
    ) -> Errors<()>;
}
Expand description

Convert the permission into a vector of red-links.

This is part of the red permission process and does three forms of processing.

  • Copy links drop their prefix, so e.g. mut[p] ref[q] becomes just [ref[q]]
  • Flattening, so ref[p,q] becomes [ref[p], ref[q]].
  • If inference variables are involved, we block waiting for their bounds.

The consumer callback may be invoked multiple times as a result of inference bounds. Each callback has a list of lists of links.

Required Methods§

Source

async fn to_red_linkvecs( &self, env: &mut Env<'db>, live_after: LivePlaces, direction: Direction, consumer: Consumer<'_, 'db, Vec<Vec<RedLink<'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.

Implementors§

Source§

impl<'db> ToRedLinkVecs<'db> for SymPerm<'db>

Source§

impl<'db> ToRedLinkVecs<'db> for SymPlace<'db>

Source§

impl<'db> ToRedLinkVecs<'db> for SymTy<'db>