pub struct CrossModuleAnalysis<'m> { /* private fields */ }
Expand description

Analyzes multiple Modules, providing a ModuleAnalysis for each; and also provides a few additional cross-module analyses (e.g., a cross-module call graph)

Implementations§

source§

impl<'m> CrossModuleAnalysis<'m>

source

pub fn new(modules: impl IntoIterator<Item = &'m Module>) -> Self

Create a new CrossModuleAnalysis for the given set of Modules.

This method itself is cheap; individual analyses will be computed lazily on demand.

source

pub fn modules<'s>(&'s self) -> impl Iterator<Item = &'m Module> + 's

Iterate over the analyzed Module(s).

source

pub fn functions<'s>(&'s self) -> impl Iterator<Item = &'m Function> + 's

Iterate over all the Functions in the analyzed Module(s).

source

pub fn call_graph(&self) -> Ref<'_, CallGraph<'m>>

Get the full CallGraph for the Module(s).

This will include both cross-module and within-module calls.

source

pub fn functions_by_type(&self) -> Ref<'_, FunctionsByType<'m>>

Get the FunctionsByType for the Module(s).

source

pub fn module_analysis<'s>(&'s self, mod_name: &str) -> &'s ModuleAnalysis<'m>

Get the ModuleAnalysis for the module with the given name.

Panics if no module of that name exists in the Module(s) which the CrossModuleAnalysis was created with.

source

pub fn get_func_by_name( &self, func_name: &str ) -> Option<(&'m Function, &'m Module)>

Get the Function with the given name from the analyzed Module(s).

Returns both the Function and the Module it was found in, or None if no function was found with that name.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.