Skip to content

Commit 08549f3

Browse files
committed
Avoid changing the public API for the dependencies internal iterator
1 parent a11c814 commit 08549f3

File tree

6 files changed

+18
-18
lines changed

6 files changed

+18
-18
lines changed

examples/caching_dependency_provider.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use std::cell::RefCell;
44

55
use pubgrub::range::Range;
66
use pubgrub::solver::{resolve, Dependencies, DependencyProvider, OfflineDependencyProvider};
7-
use pubgrub::type_aliases::DependencyConstraints;
87

98
type NumVS = Range<u32>;
109

@@ -30,7 +29,7 @@ impl<DP: DependencyProvider<M = String>> DependencyProvider for CachingDependenc
3029
&self,
3130
package: &DP::P,
3231
version: &DP::V,
33-
) -> Result<Dependencies<DependencyConstraints<DP::P, DP::VS>, DP::M>, DP::Err> {
32+
) -> Result<Dependencies<DP::P, DP::VS, DP::M>, DP::Err> {
3433
let mut cache = self.cached_dependencies.borrow_mut();
3534
match cache.get_dependencies(package, version) {
3635
Ok(Dependencies::Unavailable(_)) => {

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
//! &self,
9797
//! package: &String,
9898
//! version: &SemanticVersion,
99-
//! ) -> Result<Dependencies<DependencyConstraints<String, SemVS>, Self::M>, Infallible> {
99+
//! ) -> Result<Dependencies<String, SemVS, Self::M>, Infallible> {
100100
//! Ok(Dependencies::Available(DependencyConstraints::default()))
101101
//! }
102102
//!

src/solver.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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))]
306306
pub 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

310310
impl<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())

src/type_aliases.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ pub type Map<K, V> = rustc_hash::FxHashMap<K, V>;
1010
/// Set implementation used by the library.
1111
pub type Set<V> = rustc_hash::FxHashSet<V>;
1212

13-
/// Concrete dependencies picked by the library during [resolve](crate::solver::resolve).
13+
/// Concrete dependencies picked by the library during [resolve](crate::solver::resolve)
14+
/// from [DependencyConstraints].
1415
pub type SelectedDependencies<DP> =
1516
Map<<DP as DependencyProvider>::P, <DP as DependencyProvider>::V>;
1617

tests/proptest.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use pubgrub::package::Package;
1111
use pubgrub::range::Range;
1212
use pubgrub::report::{DefaultStringReporter, DerivationTree, External, Reporter};
1313
use pubgrub::solver::{resolve, Dependencies, DependencyProvider, OfflineDependencyProvider};
14-
use pubgrub::type_aliases::{DependencyConstraints, SelectedDependencies};
14+
use pubgrub::type_aliases::SelectedDependencies;
1515
#[cfg(feature = "serde")]
1616
use pubgrub::version::SemanticVersion;
1717
use pubgrub::version_set::VersionSet;
@@ -37,7 +37,7 @@ impl<P: Package, VS: VersionSet> DependencyProvider for OldestVersionsDependency
3737
&self,
3838
p: &P,
3939
v: &VS::V,
40-
) -> Result<Dependencies<DependencyConstraints<Self::P, Self::VS>, Self::M>, Infallible> {
40+
) -> Result<Dependencies<P, VS, Self::M>, Infallible> {
4141
self.0.get_dependencies(p, v)
4242
}
4343

@@ -90,7 +90,7 @@ impl<DP: DependencyProvider> DependencyProvider for TimeoutDependencyProvider<DP
9090
&self,
9191
p: &DP::P,
9292
v: &DP::V,
93-
) -> Result<Dependencies<DependencyConstraints<DP::P, DP::VS>, DP::M>, DP::Err> {
93+
) -> Result<Dependencies<DP::P, DP::VS, DP::M>, DP::Err> {
9494
self.dp.get_dependencies(p, v)
9595
}
9696

@@ -352,8 +352,8 @@ fn retain_dependencies<N: Package + Ord, VS: VersionSet>(
352352
smaller_dependency_provider.add_dependencies(
353353
n.clone(),
354354
v.clone(),
355-
deps.into_iter().filter_map(|(dep, range)| {
356-
if !retain(n, v, &dep) {
355+
deps.iter().filter_map(|(dep, range)| {
356+
if !retain(n, v, dep) {
357357
None
358358
} else {
359359
Some((dep.clone(), range.clone()))

tests/sat_dependency_provider.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ impl<P: Package, VS: VersionSet> SatResolve<P, VS> {
6969
Dependencies::Unavailable(_) => panic!(),
7070
Dependencies::Available(d) => d,
7171
};
72-
for (p1, range) in deps {
72+
for (p1, range) in &deps {
7373
let empty_vec = vec![];
7474
let mut matches: Vec<varisat::Lit> = all_versions_by_p
75-
.get(&p1)
75+
.get(p1)
7676
.unwrap_or(&empty_vec)
7777
.iter()
7878
.filter(|(v1, _)| range.contains(v1))

0 commit comments

Comments
 (0)