@@ -71,7 +71,7 @@ use crate::error::PubGrubError;
7171use crate :: internal:: core:: State ;
7272use crate :: internal:: incompatibility:: Incompatibility ;
7373use crate :: package:: Package ;
74- use crate :: type_aliases:: { Map , SelectedDependencies } ;
74+ use crate :: type_aliases:: { DependencyConstraints , Map , SelectedDependencies } ;
7575use crate :: version_set:: VersionSet ;
7676use log:: { debug, info} ;
7777
@@ -280,10 +280,7 @@ pub trait DependencyProvider {
280280 & self ,
281281 package : & Self :: P ,
282282 version : & Self :: V ,
283- ) -> Result <
284- Dependencies < impl IntoIterator < Item = ( Self :: P , Self :: VS ) > + Clone , Self :: M > ,
285- Self :: Err ,
286- > ;
283+ ) -> Result < Dependencies < DependencyConstraints < Self :: P , Self :: VS > , Self :: M > , Self :: Err > ;
287284
288285 /// This is called fairly regularly during the resolution,
289286 /// if it returns an Err then resolution will be terminated.
@@ -357,8 +354,8 @@ impl<P: Package, VS: VersionSet> OfflineDependencyProvider<P, VS> {
357354
358355 /// Lists dependencies of a given package and version.
359356 /// Returns [None] if no information is available regarding that package and version pair.
360- fn dependencies ( & self , package : & P , version : & VS :: V ) -> Option < & Map < P , VS > > {
361- self . dependencies . get ( package) ?. get ( version)
357+ fn dependencies ( & self , package : & P , version : & VS :: V ) -> Option < DependencyConstraints < P , VS > > {
358+ self . dependencies . get ( package) ?. get ( version) . cloned ( )
362359 }
363360}
364361
@@ -396,17 +393,12 @@ impl<P: Package, VS: VersionSet> DependencyProvider for OfflineDependencyProvide
396393 & self ,
397394 package : & P ,
398395 version : & VS :: V ,
399- ) -> Result <
400- Dependencies < impl IntoIterator < Item = ( Self :: P , Self :: VS ) > + Clone , Self :: M > ,
401- Self :: Err ,
402- > {
396+ ) -> Result < Dependencies < DependencyConstraints < Self :: P , Self :: VS > , Self :: M > , Self :: Err > {
403397 Ok ( match self . dependencies ( package, version) {
404398 None => {
405399 Dependencies :: Unavailable ( "its dependencies could not be determined" . to_string ( ) )
406400 }
407- Some ( dependencies) => {
408- Dependencies :: Available ( dependencies. iter ( ) . map ( |( p, vs) | ( p. clone ( ) , vs. clone ( ) ) ) )
409- }
401+ Some ( dependencies) => Dependencies :: Available ( dependencies) ,
410402 } )
411403 }
412404}
0 commit comments