pub trait Backend {
// Required methods
fn install(&mut self, package: PackageName) -> Result<(), Error>;
fn uninstall(&mut self, package: PackageName) -> Result<(), Error>;
fn upgrade(&mut self, package: PackageName) -> Result<(), Error>;
fn get_installed_packages(&self) -> Result<Vec<PackageName>, Error>;
fn get_package_detail(
&self,
package: &PackageName,
) -> Result<Package, Error>;
fn get_repository_detail(&self) -> Result<Repository, Error>;
}