Skip to content

Commit 3740bbb

Browse files
committed
refactor(toml): Defer inferred discovery
1 parent 27d3e3d commit 3740bbb

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

src/cargo/util/toml/targets.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -370,13 +370,13 @@ pub fn resolve_examples(
370370
warnings: &mut Vec<String>,
371371
errors: &mut Vec<String>,
372372
) -> CargoResult<Vec<TomlExampleTarget>> {
373-
let inferred = infer_from_directory(&package_root, Path::new(DEFAULT_EXAMPLE_DIR_NAME));
373+
let mut inferred = || infer_from_directory(&package_root, Path::new(DEFAULT_EXAMPLE_DIR_NAME));
374374

375375
let targets = resolve_targets(
376376
"example",
377377
"example",
378378
toml_examples,
379-
&inferred,
379+
&mut inferred,
380380
package_root,
381381
edition,
382382
autodiscover,
@@ -427,13 +427,13 @@ pub fn resolve_tests(
427427
warnings: &mut Vec<String>,
428428
errors: &mut Vec<String>,
429429
) -> CargoResult<Vec<TomlTestTarget>> {
430-
let inferred = infer_from_directory(&package_root, Path::new(DEFAULT_TEST_DIR_NAME));
430+
let mut inferred = || infer_from_directory(&package_root, Path::new(DEFAULT_TEST_DIR_NAME));
431431

432432
let targets = resolve_targets(
433433
"test",
434434
"test",
435435
toml_tests,
436-
&inferred,
436+
&mut inferred,
437437
package_root,
438438
edition,
439439
autodiscover,
@@ -492,13 +492,13 @@ pub fn resolve_benches(
492492
Some(legacy_path)
493493
};
494494

495-
let inferred = infer_from_directory(&package_root, Path::new(DEFAULT_BENCH_DIR_NAME));
495+
let mut inferred = || infer_from_directory(&package_root, Path::new(DEFAULT_BENCH_DIR_NAME));
496496

497497
let targets = resolve_targets_with_legacy_path(
498498
"benchmark",
499499
"bench",
500500
toml_benches,
501-
&inferred,
501+
&mut inferred,
502502
package_root,
503503
edition,
504504
autodiscover,
@@ -540,7 +540,7 @@ fn resolve_targets(
540540
target_kind_human: &str,
541541
target_kind: &str,
542542
toml_targets: Option<&Vec<TomlTarget>>,
543-
inferred: &[(String, PathBuf)],
543+
inferred: &mut dyn FnMut() -> Vec<(String, PathBuf)>,
544544
package_root: &Path,
545545
edition: Edition,
546546
autodiscover: Option<bool>,
@@ -567,7 +567,7 @@ fn resolve_targets_with_legacy_path(
567567
target_kind_human: &str,
568568
target_kind: &str,
569569
toml_targets: Option<&Vec<TomlTarget>>,
570-
inferred: &[(String, PathBuf)],
570+
inferred: &mut dyn FnMut() -> Vec<(String, PathBuf)>,
571571
package_root: &Path,
572572
edition: Edition,
573573
autodiscover: Option<bool>,
@@ -576,9 +576,10 @@ fn resolve_targets_with_legacy_path(
576576
legacy_path: &mut dyn FnMut(&TomlTarget) -> Option<PathBuf>,
577577
autodiscover_flag_name: &str,
578578
) -> CargoResult<Vec<TomlTarget>> {
579+
let inferred = inferred();
579580
let toml_targets = toml_targets_and_inferred(
580581
toml_targets,
581-
inferred,
582+
&inferred,
582583
package_root,
583584
autodiscover,
584585
edition,
@@ -600,7 +601,7 @@ fn resolve_targets_with_legacy_path(
600601
for mut target in toml_targets {
601602
let path = target_path(
602603
&target,
603-
inferred,
604+
&inferred,
604605
target_kind,
605606
package_root,
606607
edition,

0 commit comments

Comments
 (0)