Skip to content

Commit df7540c

Browse files
committed
DependencyProvider methods now takes mutable reference
1 parent 57971c4 commit df7540c

17 files changed

+145
-96
lines changed

benches/large_case.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// SPDX-License-Identifier: MPL-2.0
2+
use std::collections::HashMap;
23
use std::time::Duration;
34

45
use criterion::*;
@@ -12,12 +13,23 @@ fn bench<'a, P: Package + Deserialize<'a>, VS: VersionSet + Deserialize<'a>>(
1213
) where
1314
<VS as VersionSet>::V: Deserialize<'a>,
1415
{
15-
let dependency_provider: OfflineDependencyProvider<P, VS> = ron::de::from_str(case).unwrap();
16+
let mut dependency_provider: OfflineDependencyProvider<P, VS> =
17+
ron::de::from_str(case).unwrap();
18+
19+
let dependencies = dependency_provider
20+
.packages()
21+
.map(|p| {
22+
(
23+
p.clone(),
24+
dependency_provider.versions(p).unwrap().cloned().collect(),
25+
)
26+
})
27+
.collect::<HashMap<_, Vec<_>>>();
1628

1729
b.iter(|| {
18-
for p in dependency_provider.packages() {
19-
for n in dependency_provider.versions(p).unwrap() {
20-
let _ = resolve(&dependency_provider, p.clone(), n.clone());
30+
for (p, versions) in &dependencies {
31+
for n in versions {
32+
let _ = resolve(&mut dependency_provider, p.clone(), n.clone());
2133
}
2234
}
2335
});

benches/sudoku.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ fn solve(board: Vec<(SudokuPackage, Ranges<u8>)>) -> SelectedDependencies<DP> {
121121
let mut dependency_provider = DP::new();
122122
encode_constraints(&mut dependency_provider);
123123
dependency_provider.add_dependencies(SudokuPackage::Root, 1, board);
124-
match resolve(&dependency_provider, SudokuPackage::Root, 1) {
124+
match resolve(&mut dependency_provider, SudokuPackage::Root, 1) {
125125
Ok(sol) => sol,
126126
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
127127
derivation_tree.collapse_no_versions();

examples/branching_error_reporting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ fn main() {
5454
dependency_provider.add_dependencies("y", (2, 0, 0), []);
5555

5656
// Run the algorithm.
57-
match resolve(&dependency_provider, "root", (1, 0, 0)) {
57+
match resolve(&mut dependency_provider, "root", (1, 0, 0)) {
5858
Ok(sol) => println!("{:?}", sol),
5959
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
6060
derivation_tree.collapse_no_versions();

examples/caching_dependency_provider.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ impl<DP: DependencyProvider> CachingDependencyProvider<DP> {
2525
impl<DP: DependencyProvider<M = String>> DependencyProvider for CachingDependencyProvider<DP> {
2626
// Caches dependencies if they were already queried
2727
fn get_dependencies(
28-
&self,
28+
&mut self,
2929
package: &DP::P,
3030
version: &DP::V,
3131
) -> Result<Dependencies<DP::P, DP::VS, DP::M>, DP::Err> {
@@ -51,13 +51,17 @@ impl<DP: DependencyProvider<M = String>> DependencyProvider for CachingDependenc
5151
}
5252
}
5353

54-
fn choose_version(&self, package: &DP::P, ranges: &DP::VS) -> Result<Option<DP::V>, DP::Err> {
54+
fn choose_version(
55+
&mut self,
56+
package: &DP::P,
57+
ranges: &DP::VS,
58+
) -> Result<Option<DP::V>, DP::Err> {
5559
self.remote_dependencies.choose_version(package, ranges)
5660
}
5761

5862
type Priority = DP::Priority;
5963

60-
fn prioritize(&self, package: &DP::P, ranges: &DP::VS) -> Self::Priority {
64+
fn prioritize(&mut self, package: &DP::P, ranges: &DP::VS) -> Self::Priority {
6165
self.remote_dependencies.prioritize(package, ranges)
6266
}
6367

@@ -76,9 +80,9 @@ fn main() {
7680
// Add dependencies as needed. Here only root package is added.
7781
remote_dependencies_provider.add_dependencies("root", 1u32, Vec::new());
7882

79-
let caching_dependencies_provider =
83+
let mut caching_dependencies_provider =
8084
CachingDependencyProvider::new(remote_dependencies_provider);
8185

82-
let solution = resolve(&caching_dependencies_provider, "root", 1u32);
86+
let solution = resolve(&mut caching_dependencies_provider, "root", 1u32);
8387
println!("Solution: {:?}", solution);
8488
}

examples/doc_interface.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ fn main() {
1919
dependency_provider.add_dependencies("icons", 1u32, []);
2020

2121
// Run the algorithm.
22-
let solution = resolve(&dependency_provider, "root", 1u32);
22+
let solution = resolve(&mut dependency_provider, "root", 1u32);
2323
println!("Solution: {:?}", solution);
2424
}

examples/doc_interface_error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fn main() {
7171
dependency_provider.add_dependencies("intl", (5, 0, 0), []);
7272

7373
// Run the algorithm.
74-
match resolve(&dependency_provider, "root", (1, 0, 0)) {
74+
match resolve(&mut dependency_provider, "root", (1, 0, 0)) {
7575
Ok(sol) => println!("{:?}", sol),
7676
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
7777
derivation_tree.collapse_no_versions();

examples/doc_interface_semantic.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ fn main() {
6262
dependency_provider.add_dependencies("icons", (2, 0, 0), []);
6363

6464
// Run the algorithm.
65-
match resolve(&dependency_provider, "root", (1, 0, 0)) {
65+
match resolve(&mut dependency_provider, "root", (1, 0, 0)) {
6666
Ok(sol) => println!("{:?}", sol),
6767
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
6868
derivation_tree.collapse_no_versions();

examples/linear_error_reporting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fn main() {
3636
dependency_provider.add_dependencies("baz", (3, 0, 0), []);
3737

3838
// Run the algorithm.
39-
match resolve(&dependency_provider, "root", (1, 0, 0)) {
39+
match resolve(&mut dependency_provider, "root", (1, 0, 0)) {
4040
Ok(sol) => println!("{:?}", sol),
4141
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
4242
derivation_tree.collapse_no_versions();

examples/unsat_root_message_no_version.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ fn main() {
217217
);
218218

219219
// Run the algorithm
220-
match resolve(&dependency_provider, Package::Root, (0, 0, 0)) {
220+
match resolve(&mut dependency_provider, Package::Root, (0, 0, 0)) {
221221
Ok(sol) => println!("{:?}", sol),
222222
Err(PubGrubError::NoSolution(derivation_tree)) => {
223223
eprintln!("No solution.\n");

src/internal/partial_solution.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ impl<DP: DependencyProvider> PartialSolution<DP> {
259259

260260
pub(crate) fn pick_highest_priority_pkg(
261261
&mut self,
262-
prioritizer: impl Fn(&DP::P, &DP::VS) -> DP::Priority,
262+
mut prioritizer: impl FnMut(&DP::P, &DP::VS) -> DP::Priority,
263263
) -> Option<DP::P> {
264264
let check_all = self.changed_this_decision_level
265265
== self.current_decision_level.0.saturating_sub(1) as usize;

0 commit comments

Comments
 (0)