pub struct ReverseDependencyAnalyzer;Expand description
Reverse dependency analyzer for removal operations.
This struct provides the main entry point for analyzing reverse dependencies for packages being removed. It performs BFS traversal to find all packages that depend on the removal targets.
Implementations§
Source§impl ReverseDependencyAnalyzer
impl ReverseDependencyAnalyzer
Sourcepub const fn new() -> Self
pub const fn new() -> Self
What: Create a new reverse dependency analyzer.
Inputs:
- (none)
Output:
- Returns a new
ReverseDependencyAnalyzerinstance.
Details:
- Creates an analyzer with default configuration.
§Example
use arch_toolkit::deps::ReverseDependencyAnalyzer;
let analyzer = ReverseDependencyAnalyzer::new();Sourcepub fn analyze(
&self,
packages: &[PackageRef],
) -> Result<ReverseDependencyReport>
pub fn analyze( &self, packages: &[PackageRef], ) -> Result<ReverseDependencyReport>
What: Analyze reverse dependencies for packages being removed.
Inputs:
packages: A slice ofPackageRefinstances for packages being removed.
Output:
- Returns a
ResultcontainingReverseDependencyReporton success, or anArchToolkitErroron failure.
Details:
- Performs breadth-first search (BFS) traversal using
pacman -Qimetadata. - Aggregates per-root relationships to track direct vs transitive dependents.
- Only analyzes installed packages (skips uninstalled packages).
- Returns empty report if no packages provided or all packages are uninstalled.
§Errors
This function can return an ArchToolkitError if underlying pacman commands fail
or if parsing their output encounters unexpected formats.
§Example
use arch_toolkit::deps::ReverseDependencyAnalyzer;
use arch_toolkit::{PackageRef, PackageSource};
let analyzer = ReverseDependencyAnalyzer::new();
let packages = vec![
PackageRef {
name: "qt5-base".into(),
version: "5.15.10".into(),
source: PackageSource::Official {
repo: "extra".into(),
arch: "x86_64".into(),
},
},
];
let report = analyzer.analyze(&packages)?;
println!("{} packages would be affected", report.dependents.len());Trait Implementations§
Auto Trait Implementations§
impl Freeze for ReverseDependencyAnalyzer
impl RefUnwindSafe for ReverseDependencyAnalyzer
impl Send for ReverseDependencyAnalyzer
impl Sync for ReverseDependencyAnalyzer
impl Unpin for ReverseDependencyAnalyzer
impl UnsafeUnpin for ReverseDependencyAnalyzer
impl UnwindSafe for ReverseDependencyAnalyzer
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
Mutably borrows from an owned value. Read more