@@ -6,7 +6,7 @@ use std::path::PathBuf;
66use anyhow:: Context as _;
77use cargo_edit:: {
88 CargoResult , CertsSource , CrateSpec , Dependency , IndexCache , LocalManifest , RustVersion ,
9- Source , get_compatible_dependency , get_latest_dependency , registry_url, set_dep_version,
9+ Source , find_compatible_version , find_latest_version , registry_url, set_dep_version,
1010 shell_note, shell_status, shell_warn, shell_write_stdout,
1111} ;
1212use clap:: Args ;
@@ -290,33 +290,30 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> {
290290 // we're offline.
291291 let registry_url = registry_url ( & manifest_path, dependency. registry ( ) ) ?;
292292 let index = index. index ( & registry_url) ?;
293+ let krate = index. krate ( & dependency. name ) ?;
294+ let versions = krate
295+ . as_ref ( )
296+ . map ( |k| k. versions . as_slice ( ) )
297+ . unwrap_or_default ( ) ;
293298 let is_prerelease = old_version_req. contains ( '-' ) ;
294299
295300 let latest_compatible = VersionReq :: parse ( & old_version_req)
296301 . ok ( )
297302 . and_then ( |old_version_req| {
298- get_compatible_dependency (
299- & dependency. name ,
300- & old_version_req,
301- rust_version,
302- index,
303- )
304- . ok ( )
303+ find_compatible_version ( versions, & old_version_req, rust_version)
305304 } )
306305 . map ( |d| {
307306 d. version ( )
308307 . expect ( "registry packages always have a version" )
309308 . to_owned ( )
310309 } ) ;
311310
312- let latest_version =
313- get_latest_dependency ( & dependency. name , is_prerelease, rust_version, index)
314- . ok ( )
315- . map ( |d| {
316- d. version ( )
317- . expect ( "registry packages always have a version" )
318- . to_owned ( )
319- } ) ;
311+ let latest_version = find_latest_version ( versions, is_prerelease, rust_version)
312+ . map ( |d| {
313+ d. version ( )
314+ . expect ( "registry packages always have a version" )
315+ . to_owned ( )
316+ } ) ;
320317
321318 let latest_incompatible = if latest_version != latest_compatible {
322319 latest_version
0 commit comments