1 2 3 4 5 6 7 8 9 10 11
use anyhow::Result; /// Base trait for PM integrations pub trait PackageManager { fn install_packages(&mut self, packages: Vec<String>) -> Result<()>; fn install_package(&mut self, package: &str) -> Result<()>; fn new() -> Self; } /// Packages managers such as NPM or cargo pub trait ExternalPackageManager: PackageManager { fn install_on_distro<T: PackageManager>(&mut self, pm: T) -> Result<()>; }