pub struct DepGraph {Show 14 fields
pub file_imports: Vec<(u32, u32)>,
pub symbol_refs: Vec<(u32, u32)>,
pub file_imported_by: Vec<(u32, u32)>,
pub symbol_ref_by: Vec<(u32, u32)>,
pub calls: Vec<(u32, u32)>,
pub called_by: Vec<(u32, u32)>,
pub file_pagerank: Vec<f32>,
pub symbol_pagerank: Vec<f32>,
pub imports_adj: HashMap<u32, Vec<u32>>,
pub imported_by_adj: HashMap<u32, Vec<u32>>,
pub refs_adj: HashMap<u32, Vec<u32>>,
pub ref_by_adj: HashMap<u32, Vec<u32>>,
pub callees_adj: HashMap<u32, Vec<u32>>,
pub callers_adj: HashMap<u32, Vec<u32>>,
}Expand description
Dependency graph for impact analysis
Uses both edge lists (for serialization) and adjacency maps (for O(1) queries).
The adjacency maps are rebuilt after deserialization via rebuild_adjacency_maps().
Fields§
§file_imports: Vec<(u32, u32)>File imports: (file_id, imported_file_id)
symbol_refs: Vec<(u32, u32)>Symbol references: (symbol_id, referenced_symbol_id)
file_imported_by: Vec<(u32, u32)>File imported by: (file_id, importing_file_id)
symbol_ref_by: Vec<(u32, u32)>Symbol referenced by: (symbol_id, referencing_symbol_id)
calls: Vec<(u32, u32)>Function calls: (caller_symbol_id, callee_symbol_id)
called_by: Vec<(u32, u32)>Called by: (callee_symbol_id, caller_symbol_id)
file_pagerank: Vec<f32>PageRank importance score per file
symbol_pagerank: Vec<f32>PageRank importance score per symbol
imports_adj: HashMap<u32, Vec<u32>>file_id -> list of files it imports
imported_by_adj: HashMap<u32, Vec<u32>>file_id -> list of files that import it
refs_adj: HashMap<u32, Vec<u32>>symbol_id -> list of symbols it references
ref_by_adj: HashMap<u32, Vec<u32>>symbol_id -> list of symbols that reference it
callees_adj: HashMap<u32, Vec<u32>>caller_id -> list of callees
callers_adj: HashMap<u32, Vec<u32>>callee_id -> list of callers
Implementations§
Source§impl DepGraph
impl DepGraph
pub fn new() -> Self
Sourcepub fn rebuild_adjacency_maps(&mut self)
pub fn rebuild_adjacency_maps(&mut self)
Rebuild adjacency maps from edge lists. Call this after deserializing a DepGraph.
Sourcepub fn add_file_import(&mut self, from_file: u32, to_file: u32)
pub fn add_file_import(&mut self, from_file: u32, to_file: u32)
Add a file import edge
Sourcepub fn add_symbol_ref(&mut self, from_symbol: u32, to_symbol: u32)
pub fn add_symbol_ref(&mut self, from_symbol: u32, to_symbol: u32)
Add a symbol reference edge
Sourcepub fn get_importers(&self, file_id: u32) -> Vec<u32>
pub fn get_importers(&self, file_id: u32) -> Vec<u32>
Get files that import a given file (O(1) lookup)
Sourcepub fn get_imports(&self, file_id: u32) -> Vec<u32>
pub fn get_imports(&self, file_id: u32) -> Vec<u32>
Get files that a given file imports (O(1) lookup)
Sourcepub fn get_referencers(&self, symbol_id: u32) -> Vec<u32>
pub fn get_referencers(&self, symbol_id: u32) -> Vec<u32>
Get symbols that reference a given symbol (O(1) lookup)
Sourcepub fn get_callers(&self, symbol_id: u32) -> Vec<u32>
pub fn get_callers(&self, symbol_id: u32) -> Vec<u32>
Get callers of a function (O(1) lookup)
Sourcepub fn get_callees(&self, symbol_id: u32) -> Vec<u32>
pub fn get_callees(&self, symbol_id: u32) -> Vec<u32>
Get callees of a function (O(1) lookup)
Sourcepub fn needs_rebuild(&self) -> bool
pub fn needs_rebuild(&self) -> bool
Check if adjacency maps are populated (used to detect if rebuild is needed)
Trait Implementations§
Source§impl<'de> Deserialize<'de> for DepGraph
impl<'de> Deserialize<'de> for DepGraph
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DepGraph
impl RefUnwindSafe for DepGraph
impl Send for DepGraph
impl Sync for DepGraph
impl Unpin for DepGraph
impl UnsafeUnpin for DepGraph
impl UnwindSafe for DepGraph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);