pub struct DependencyResolver { /* private fields */ }Expand description
Dependency resolver with DPLL-based SAT solving.
Supports:
- Greedy resolution (fast path for simple dependency trees)
- SAT-based resolution for complex conflict scenarios
- Virtual packages via
provides - Upgrade computation
Implementations§
Source§impl DependencyResolver
impl DependencyResolver
pub fn new() -> Self
Sourcepub fn register_package(
&mut self,
package_id: PackageId,
version: Version,
dependencies: Vec<Dependency>,
conflicts: Vec<PackageId>,
)
pub fn register_package( &mut self, package_id: PackageId, version: Version, dependencies: Vec<Dependency>, conflicts: Vec<PackageId>, )
Register a package version
Sourcepub fn register_package_full(
&mut self,
package_id: PackageId,
version: Version,
dependencies: Vec<Dependency>,
conflicts: Vec<PackageId>,
provides: Vec<PackageId>,
)
pub fn register_package_full( &mut self, package_id: PackageId, version: Version, dependencies: Vec<Dependency>, conflicts: Vec<PackageId>, provides: Vec<PackageId>, )
Register a package version with virtual provides
Sourcepub fn resolve(
&self,
dependencies: &[Dependency],
) -> Result<Vec<(PackageId, Version)>, ResolverError>
pub fn resolve( &self, dependencies: &[Dependency], ) -> Result<Vec<(PackageId, Version)>, ResolverError>
Resolve dependencies for a package using greedy algorithm.
Returns a topologically sorted list of packages to install. Falls back to SAT solving on conflict.
Sourcepub fn resolve_upgrade(
&self,
installed: &BTreeMap<PackageId, Version>,
upgrade_targets: &[PackageId],
) -> Result<Vec<(PackageId, Version)>, ResolverError>
pub fn resolve_upgrade( &self, installed: &BTreeMap<PackageId, Version>, upgrade_targets: &[PackageId], ) -> Result<Vec<(PackageId, Version)>, ResolverError>
Resolve an upgrade: given currently installed packages and a set of packages to upgrade, compute the minimal set of packages to install.
installed maps package names to their currently installed versions.
upgrade_targets lists packages to upgrade (empty means upgrade all).
Returns the list of (package, new_version) pairs that should be installed to satisfy the upgrade.
Sourcepub fn latest_version(&self, package_id: &str) -> Option<Version>
pub fn latest_version(&self, package_id: &str) -> Option<Version>
Get the latest available version for a package.
Sourcepub fn search(&self, query: &str) -> Vec<(PackageId, Version)>
pub fn search(&self, query: &str) -> Vec<(PackageId, Version)>
Search available packages by name substring.
Returns matching (package_id, latest_version) pairs.
Sourcepub fn get_package_metadata(&self, package_id: &str) -> Option<PackageMetadata>
pub fn get_package_metadata(&self, package_id: &str) -> Option<PackageMetadata>
Get metadata for a package (returns the latest version’s metadata).