Use String type for Profile parse error

This commit is contained in:
Antoine Martin 2020-10-05 18:03:54 +02:00
parent 3afc004845
commit d67a7e6cfc
2 changed files with 6 additions and 11 deletions

View file

@ -542,8 +542,8 @@ Arguments:
|path| format!("{} is not a valid UTF8 string", path.to_string_lossy())
));
profile_string.parse().unwrap_or_else(|_| {
eprintln!("error: unknown profile {}", profile_string);
profile_string.parse().unwrap_or_else(|err| {
eprintln!("error: {}", err);
eprintln!("help: the available profiles are:");
for choice in Profile::all() {
eprintln!("- {}", choice);

View file

@ -24,13 +24,8 @@ impl Profile {
}
}
#[derive(Debug)]
pub struct ProfileErr {
pub name: String,
}
impl FromStr for Profile {
type Err = ProfileErr;
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
@ -38,7 +33,7 @@ impl FromStr for Profile {
"b" | "compiler" => Ok(Profile::Compiler),
"c" | "llvm" | "codegen" => Ok(Profile::Codegen),
"d" | "maintainer" | "user" => Ok(Profile::User),
_ => Err(ProfileErr { name: s.to_string() }),
_ => Err(format!("unknown profile: '{}'", s)),
}
}
}
@ -116,8 +111,8 @@ d) Install Rust from source"
io::stdin().read_line(&mut input)?;
break match input.trim().to_lowercase().parse() {
Ok(profile) => profile,
Err(ProfileErr { name }) => {
println!("error: unrecognized option '{}'", name);
Err(err) => {
println!("error: {}", err);
println!("note: press Ctrl+C to exit");
continue;
}