|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);
}
}
-#[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 {
"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)),
}
}
}
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;
}