Skip to main content

load_resolved_versions

Function load_resolved_versions 

Source
pub async fn load_resolved_versions(
    uri: &Url,
    lockfile_cache: &Arc<LockFileCache>,
    ecosystem: &dyn Ecosystem,
) -> (HashMap<PackageName, ConcreteVersion>, HashMap<PackageName, Vec<ConcreteVersion>>)
Expand description

Loads resolved versions from lock file for a given manifest URI.

Uses the ecosystem’s lockfile provider to parse the lock file, then split_resolved_packages. Both returned maps are empty if no lock file is found or parsing fails.

§Examples

use deps_core::HttpCache;
use deps_core::lockfile::LockFileCache;
use deps_core::test_util::test_uri;
use deps_engine::classify::resolved::load_resolved_versions;
use deps_engine::setup::CargoEcosystem;
use std::sync::Arc;

#[tokio::main]
async fn main() {
    let ecosystem = CargoEcosystem::new(Arc::new(HttpCache::new()));
    let lockfile_cache = Arc::new(LockFileCache::new());
    // No `Cargo.lock` exists at this synthetic path, so both maps come back empty —
    // the same fast path a manifest with no lock file takes in production.
    let uri = test_uri("/nonexistent-for-doctest/Cargo.toml");

    let (versions, candidates) =
        load_resolved_versions(&uri, &lockfile_cache, &ecosystem).await;
    assert!(versions.is_empty());
    assert!(candidates.is_empty());
}