Skip to content

Commit 992abc3

Browse files
committed
feat(add): suggest similarly named features
1 parent 16c5947 commit 992abc3

File tree

3 files changed

+57
-25
lines changed

3 files changed

+57
-25
lines changed

src/cargo/ops/cargo_add/mod.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ use crate::core::Summary;
2929
use crate::core::Workspace;
3030
use crate::sources::source::QueryKind;
3131
use crate::util::cache_lock::CacheLockMode;
32+
use crate::util::edit_distance;
3233
use crate::util::style;
3334
use crate::util::toml::lookup_path_base;
3435
use crate::util::toml_mut::dependency::Dependency;
@@ -167,6 +168,17 @@ pub fn add(workspace: &Workspace<'_>, options: &AddOptions<'_>) -> CargoResult<(
167168
if activated.is_empty() && deactivated.is_empty() {
168169
write!(message, "no features available for crate {}", dep.name)?;
169170
} else {
171+
for unknown_feature in &unknown_features {
172+
let suggested_feature_msg = edit_distance::closest_msg(
173+
unknown_feature,
174+
deactivated.iter(),
175+
|dep| *dep,
176+
"feature",
177+
);
178+
if !suggested_feature_msg.is_empty() {
179+
writeln!(message, "{suggested_feature_msg}")?;
180+
}
181+
}
170182
if !deactivated.is_empty() {
171183
if deactivated.len() <= MAX_FEATURE_PRINTS {
172184
writeln!(

tests/testsuite/cargo_add/feature_suggestion_multiple/stderr.term.svg

Lines changed: 16 additions & 4 deletions
Loading
Lines changed: 29 additions & 21 deletions
Loading

0 commit comments

Comments
 (0)