@@ -158,10 +158,10 @@ pub fn resolve<DP: DependencyProvider>(
158158 ) ) ;
159159 continue ;
160160 }
161- Dependencies :: Available ( x) if x. clone ( ) . into_iter ( ) . any ( | ( d , _ ) | & d == p) => {
161+ Dependencies :: Available ( x) if x. contains_key ( p) => {
162162 return Err ( PubGrubError :: SelfDependency {
163163 package : p. clone ( ) ,
164- version : v. clone ( ) ,
164+ version : v,
165165 } ) ;
166166 }
167167 Dependencies :: Available ( x) => x,
@@ -189,11 +189,11 @@ pub fn resolve<DP: DependencyProvider>(
189189/// An enum used by [DependencyProvider] that holds information about package dependencies.
190190/// For each [Package] there is a set of versions allowed as a dependency.
191191#[ derive( Clone ) ]
192- pub enum Dependencies < T , M : Eq + Clone + Debug + Display > {
192+ pub enum Dependencies < P : Package , VS : VersionSet , M : Eq + Clone + Debug + Display > {
193193 /// Package dependencies are unavailable with the reason why they are missing.
194194 Unavailable ( M ) ,
195195 /// Container for all available package versions.
196- Available ( T ) ,
196+ Available ( DependencyConstraints < P , VS > ) ,
197197}
198198
199199/// Trait that allows the algorithm to retrieve available packages and their dependencies.
@@ -280,7 +280,7 @@ pub trait DependencyProvider {
280280 & self ,
281281 package : & Self :: P ,
282282 version : & Self :: V ,
283- ) -> Result < Dependencies < DependencyConstraints < Self :: P , Self :: VS > , Self :: M > , Self :: Err > ;
283+ ) -> Result < Dependencies < Self :: P , Self :: VS , Self :: M > , Self :: Err > ;
284284
285285 /// This is called fairly regularly during the resolution,
286286 /// if it returns an Err then resolution will be terminated.
@@ -304,7 +304,7 @@ pub trait DependencyProvider {
304304) ]
305305#[ cfg_attr( feature = "serde" , serde( transparent) ) ]
306306pub struct OfflineDependencyProvider < P : Package , VS : VersionSet > {
307- dependencies : Map < P , BTreeMap < VS :: V , Map < P , VS > > > ,
307+ dependencies : Map < P , BTreeMap < VS :: V , DependencyConstraints < P , VS > > > ,
308308}
309309
310310impl < P : Package , VS : VersionSet > OfflineDependencyProvider < P , VS > {
@@ -393,7 +393,7 @@ impl<P: Package, VS: VersionSet> DependencyProvider for OfflineDependencyProvide
393393 & self ,
394394 package : & P ,
395395 version : & VS :: V ,
396- ) -> Result < Dependencies < DependencyConstraints < Self :: P , Self :: VS > , Self :: M > , Self :: Err > {
396+ ) -> Result < Dependencies < P , VS , Self :: M > , Infallible > {
397397 Ok ( match self . dependencies ( package, version) {
398398 None => {
399399 Dependencies :: Unavailable ( "its dependencies could not be determined" . to_string ( ) )
0 commit comments