Skip to content

Commit 271df34

Browse files
committed
refactor(resolver): Switch some code from string construction to writing
1 parent efe17de commit 271df34

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

src/cargo/core/resolver/errors.rs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use std::fmt;
2+
use std::fmt::Write as _;
23
use std::task::Poll;
34

45
use crate::core::{Dependency, PackageId, Registry, Summary};
@@ -325,12 +326,10 @@ pub(super) fn activation_error(
325326
.collect();
326327
name_candidates.sort_by_key(|o| o.0);
327328

328-
let mut msg: String;
329+
let mut msg = String::new();
329330
if !name_candidates.is_empty() {
330-
msg = format!(
331-
"no matching package found\nsearched package name: `{}`\n",
332-
dep.package_name()
333-
);
331+
let _ = writeln!(&mut msg, "no matching package found",);
332+
let _ = writeln!(&mut msg, "searched package name: `{}`", dep.package_name());
334333
let mut names = name_candidates
335334
.iter()
336335
.take(3)
@@ -342,31 +341,34 @@ pub(super) fn activation_error(
342341
}
343342
// Vertically align first suggestion with missing crate name
344343
// so a typo jumps out at you.
345-
msg.push_str("perhaps you meant: ");
346-
msg.push_str(&names.iter().enumerate().fold(
347-
String::default(),
348-
|acc, (i, el)| match i {
344+
let suggestions = names
345+
.iter()
346+
.enumerate()
347+
.fold(String::default(), |acc, (i, el)| match i {
349348
0 => acc + el,
350349
i if names.len() - 1 == i && name_candidates.len() <= 3 => acc + " or " + el,
351350
_ => acc + ", " + el,
352-
},
353-
));
354-
msg.push('\n');
351+
});
352+
let _ = writeln!(&mut msg, "perhaps you meant: {suggestions}");
355353
} else {
356-
msg = format!("no matching package named `{}` found\n", dep.package_name());
354+
let _ = writeln!(
355+
&mut msg,
356+
"no matching package named `{}` found",
357+
dep.package_name()
358+
);
357359
}
358360

359361
let mut location_searched_msg = registry.describe_source(dep.source_id());
360362
if location_searched_msg.is_empty() {
361363
location_searched_msg = format!("{}", dep.source_id());
362364
}
363365

364-
msg.push_str(&format!("location searched: {}\n", location_searched_msg));
365-
msg.push_str("required by ");
366-
msg.push_str(&describe_path_in_context(
367-
resolver_ctx,
368-
&parent.package_id(),
369-
));
366+
let _ = writeln!(&mut msg, "location searched: {}", location_searched_msg);
367+
let _ = write!(
368+
&mut msg,
369+
"required by {}",
370+
describe_path_in_context(resolver_ctx, &parent.package_id()),
371+
);
370372

371373
msg
372374
};

0 commit comments

Comments
 (0)