[][src]Struct polonius_engine::Output

pub struct Output<T: FactTypes> {
    pub errors: FxHashMap<T::Point, Vec<T::Loan>>,
    pub subset_errors: FxHashMap<T::Point, BTreeSet<(T::Origin, T::Origin)>>,
    pub dump_enabled: bool,
    pub borrow_live_at: FxHashMap<T::Point, Vec<T::Loan>>,
    pub restricts: FxHashMap<T::Point, BTreeMap<T::Origin, BTreeSet<T::Loan>>>,
    pub restricts_anywhere: FxHashMap<T::Origin, BTreeSet<T::Loan>>,
    pub region_live_at: FxHashMap<T::Point, Vec<T::Origin>>,
    pub invalidates: FxHashMap<T::Point, Vec<T::Loan>>,
    pub subset: FxHashMap<T::Point, BTreeMap<T::Origin, BTreeSet<T::Origin>>>,
    pub subset_anywhere: FxHashMap<T::Origin, BTreeSet<T::Origin>>,
    pub var_live_at: FxHashMap<T::Point, Vec<T::Variable>>,
    pub var_drop_live_at: FxHashMap<T::Point, Vec<T::Variable>>,
    pub path_maybe_initialized_at: FxHashMap<T::Point, Vec<T::Path>>,
    pub var_maybe_initialized_on_exit: FxHashMap<T::Point, Vec<T::Variable>>,
    pub known_contains: FxHashMap<T::Origin, BTreeSet<T::Loan>>,
}

Fields

errors: FxHashMap<T::Point, Vec<T::Loan>>subset_errors: FxHashMap<T::Point, BTreeSet<(T::Origin, T::Origin)>>dump_enabled: boolborrow_live_at: FxHashMap<T::Point, Vec<T::Loan>>restricts: FxHashMap<T::Point, BTreeMap<T::Origin, BTreeSet<T::Loan>>>restricts_anywhere: FxHashMap<T::Origin, BTreeSet<T::Loan>>region_live_at: FxHashMap<T::Point, Vec<T::Origin>>invalidates: FxHashMap<T::Point, Vec<T::Loan>>subset: FxHashMap<T::Point, BTreeMap<T::Origin, BTreeSet<T::Origin>>>subset_anywhere: FxHashMap<T::Origin, BTreeSet<T::Origin>>var_live_at: FxHashMap<T::Point, Vec<T::Variable>>var_drop_live_at: FxHashMap<T::Point, Vec<T::Variable>>path_maybe_initialized_at: FxHashMap<T::Point, Vec<T::Path>>var_maybe_initialized_on_exit: FxHashMap<T::Point, Vec<T::Variable>>known_contains: FxHashMap<T::Origin, BTreeSet<T::Loan>>

Methods

impl<T: FactTypes> Output<T>[src]

pub fn compute(
    all_facts: &AllFacts<T>,
    algorithm: Algorithm,
    dump_enabled: bool
) -> Self
[src]

All variants require the same initial preparations, done in multiple successive steps:

  • compute initialization data
  • compute liveness
  • prepare static inputs as shared Relations
  • in cases where LocationInsensitive variant is ran as a filtering pre-pass, partial results can also be stored in the context, so that the following variant can use it to prune its own input data

pub fn errors_at(&self, location: T::Point) -> &[T::Loan][src]

pub fn borrows_in_scope_at(&self, location: T::Point) -> &[T::Loan][src]

pub fn restricts_at(
    &self,
    location: T::Point
) -> Cow<BTreeMap<T::Origin, BTreeSet<T::Loan>>>
[src]

pub fn regions_live_at(&self, location: T::Point) -> &[T::Origin][src]

pub fn subsets_at(
    &self,
    location: T::Point
) -> Cow<BTreeMap<T::Origin, BTreeSet<T::Origin>>>
[src]

Trait Implementations

impl<T: Clone + FactTypes> Clone for Output<T> where
    T::Point: Clone,
    T::Loan: Clone,
    T::Point: Clone,
    T::Origin: Clone,
    T::Origin: Clone,
    T::Point: Clone,
    T::Loan: Clone,
    T::Point: Clone,
    T::Origin: Clone,
    T::Loan: Clone,
    T::Origin: Clone,
    T::Loan: Clone,
    T::Point: Clone,
    T::Origin: Clone,
    T::Point: Clone,
    T::Loan: Clone,
    T::Point: Clone,
    T::Origin: Clone,
    T::Origin: Clone,
    T::Origin: Clone,
    T::Origin: Clone,
    T::Point: Clone,
    T::Variable: Clone,
    T::Point: Clone,
    T::Variable: Clone,
    T::Point: Clone,
    T::Path: Clone,
    T::Point: Clone,
    T::Variable: Clone,
    T::Origin: Clone,
    T::Loan: Clone
[src]

impl<T: Debug + FactTypes> Debug for Output<T> where
    T::Point: Debug,
    T::Loan: Debug,
    T::Point: Debug,
    T::Origin: Debug,
    T::Origin: Debug,
    T::Point: Debug,
    T::Loan: Debug,
    T::Point: Debug,
    T::Origin: Debug,
    T::Loan: Debug,
    T::Origin: Debug,
    T::Loan: Debug,
    T::Point: Debug,
    T::Origin: Debug,
    T::Point: Debug,
    T::Loan: Debug,
    T::Point: Debug,
    T::Origin: Debug,
    T::Origin: Debug,
    T::Origin: Debug,
    T::Origin: Debug,
    T::Point: Debug,
    T::Variable: Debug,
    T::Point: Debug,
    T::Variable: Debug,
    T::Point: Debug,
    T::Path: Debug,
    T::Point: Debug,
    T::Variable: Debug,
    T::Origin: Debug,
    T::Loan: Debug
[src]

Auto Trait Implementations

impl<T> Send for Output<T> where
    <T as FactTypes>::Loan: Send,
    <T as FactTypes>::Origin: Send,
    <T as FactTypes>::Path: Send,
    <T as FactTypes>::Point: Send,
    <T as FactTypes>::Variable: Send

impl<T> Sync for Output<T> where
    <T as FactTypes>::Loan: Sync,
    <T as FactTypes>::Origin: Sync,
    <T as FactTypes>::Path: Sync,
    <T as FactTypes>::Point: Sync,
    <T as FactTypes>::Variable: Sync

impl<T> Unpin for Output<T> where
    <T as FactTypes>::Loan: Unpin,
    <T as FactTypes>::Origin: Unpin,
    <T as FactTypes>::Path: Unpin,
    <T as FactTypes>::Point: Unpin,
    <T as FactTypes>::Variable: Unpin

impl<T> UnwindSafe for Output<T> where
    <T as FactTypes>::Loan: RefUnwindSafe + UnwindSafe,
    <T as FactTypes>::Origin: RefUnwindSafe + UnwindSafe,
    <T as FactTypes>::Path: UnwindSafe,
    <T as FactTypes>::Point: UnwindSafe,
    <T as FactTypes>::Variable: UnwindSafe

impl<T> RefUnwindSafe for Output<T> where
    <T as FactTypes>::Loan: RefUnwindSafe,
    <T as FactTypes>::Origin: RefUnwindSafe,
    <T as FactTypes>::Path: RefUnwindSafe,
    <T as FactTypes>::Point: RefUnwindSafe,
    <T as FactTypes>::Variable: RefUnwindSafe

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = !

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]