Skip to content

Commit

Permalink
Merge pull request #4259 from epage/try
Browse files Browse the repository at this point in the history
perf: Drop use of Into::into for '?'
  • Loading branch information
epage committed Sep 26, 2022
2 parents 18ed37e + 4a1552c commit 7998669
Show file tree
Hide file tree
Showing 16 changed files with 150 additions and 125 deletions.
6 changes: 3 additions & 3 deletions src/builder/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -822,7 +822,7 @@ impl Command {
let mut styled = StyledStr::new();
let usage = Usage::new(self);
write_help(&mut styled, self, &usage, false);
write!(w, "{}", styled)?;
ok!(write!(w, "{}", styled));
w.flush()
}

Expand All @@ -837,7 +837,7 @@ impl Command {
let mut styled = StyledStr::new();
let usage = Usage::new(self);
write_help(&mut styled, self, &usage, true);
write!(w, "{}", styled)?;
ok!(write!(w, "{}", styled));
w.flush()
}

Expand Down Expand Up @@ -3896,7 +3896,7 @@ impl Command {
}
let is_multicall_set = self.is_multicall_set();

let sc = self.subcommands.iter_mut().find(|s| s.name == name)?;
let sc = some!(self.subcommands.iter_mut().find(|s| s.name == name));

// Display subcommand name, short and long in usage
let mut sc_names = String::new();
Expand Down
6 changes: 3 additions & 3 deletions src/builder/range.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,10 @@ impl From<std::ops::RangeToInclusive<usize>> for ValueRange {

impl std::fmt::Display for ValueRange {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.start_inclusive.fmt(f)?;
ok!(self.start_inclusive.fmt(f));
if !self.is_fixed() {
"..=".fmt(f)?;
self.end_inclusive.fmt(f)?;
ok!("..=".fmt(f));
ok!(self.end_inclusive.fmt(f));
}
Ok(())
}
Expand Down
17 changes: 9 additions & 8 deletions src/builder/styled_str.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,9 +223,9 @@ impl StyledStr {
None => {}
}

buffer.set_color(&color)?;
buffer.write_all(content.as_bytes())?;
buffer.reset()?;
ok!(buffer.set_color(&color));
ok!(buffer.write_all(content.as_bytes()));
ok!(buffer.reset());
}

Ok(())
Expand Down Expand Up @@ -291,7 +291,7 @@ fn cmp_key(c: (Option<Style>, &str)) -> (Option<usize>, &str) {
impl std::fmt::Display for StyledStr {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
for (_, content) in self.iter() {
std::fmt::Display::fmt(content, f)?;
ok!(std::fmt::Display::fmt(content, f));
}

Ok(())
Expand All @@ -307,12 +307,13 @@ struct AnsiDisplay<'s> {
impl std::fmt::Display for AnsiDisplay<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
let mut buffer = termcolor::Buffer::ansi();
self.styled
ok!(self
.styled
.write_colored(&mut buffer)
.map_err(|_| std::fmt::Error)?;
.map_err(|_| std::fmt::Error));
let buffer = buffer.into_inner();
let buffer = String::from_utf8(buffer).map_err(|_| std::fmt::Error)?;
std::fmt::Display::fmt(&buffer, f)?;
let buffer = ok!(String::from_utf8(buffer).map_err(|_| std::fmt::Error));
ok!(std::fmt::Display::fmt(&buffer, f));

Ok(())
}
Expand Down
72 changes: 36 additions & 36 deletions src/builder/value_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@ where
arg: Option<&crate::Arg>,
value: &std::ffi::OsStr,
) -> Result<AnyValue, crate::Error> {
let value = TypedValueParser::parse_ref(self, cmd, arg, value)?;
let value = ok!(TypedValueParser::parse_ref(self, cmd, arg, value));
Ok(AnyValue::new(value))
}

Expand All @@ -579,7 +579,7 @@ where
arg: Option<&crate::Arg>,
value: std::ffi::OsString,
) -> Result<AnyValue, crate::Error> {
let value = TypedValueParser::parse(self, cmd, arg, value)?;
let value = ok!(TypedValueParser::parse(self, cmd, arg, value));
Ok(AnyValue::new(value))
}

Expand Down Expand Up @@ -694,18 +694,18 @@ where
arg: Option<&crate::Arg>,
value: &std::ffi::OsStr,
) -> Result<Self::Value, crate::Error> {
let value = value.to_str().ok_or_else(|| {
let value = ok!(value.to_str().ok_or_else(|| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
let value = (self)(value).map_err(|e| {
}));
let value = ok!((self)(value).map_err(|e| {
let arg = arg
.map(|a| a.to_string())
.unwrap_or_else(|| "...".to_owned());
crate::Error::value_validation(arg, value.to_owned(), e.into()).with_cmd(cmd)
})?;
}));
Ok(value)
}
}
Expand Down Expand Up @@ -742,12 +742,12 @@ impl TypedValueParser for StringValueParser {
_arg: Option<&crate::Arg>,
value: std::ffi::OsString,
) -> Result<Self::Value, crate::Error> {
let value = value.into_string().map_err(|_| {
let value = ok!(value.into_string().map_err(|_| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
}));
Ok(value)
}
}
Expand Down Expand Up @@ -939,16 +939,16 @@ impl<E: crate::ValueEnum + Clone + Send + Sync + 'static> TypedValueParser for E
.collect::<Vec<_>>()
};

let value = value.to_str().ok_or_else(|| {
let value = ok!(value.to_str().ok_or_else(|| {
crate::Error::invalid_value(
cmd,
value.to_string_lossy().into_owned(),
&possible_vals(),
arg.map(ToString::to_string)
.unwrap_or_else(|| "...".to_owned()),
)
})?;
let value = E::value_variants()
}));
let value = ok!(E::value_variants()
.iter()
.find(|v| {
v.to_possible_value()
Expand All @@ -963,7 +963,7 @@ impl<E: crate::ValueEnum + Clone + Send + Sync + 'static> TypedValueParser for E
arg.map(ToString::to_string)
.unwrap_or_else(|| "...".to_owned()),
)
})?
}))
.clone();
Ok(value)
}
Expand Down Expand Up @@ -1049,12 +1049,12 @@ impl TypedValueParser for PossibleValuesParser {
arg: Option<&crate::Arg>,
value: std::ffi::OsString,
) -> Result<String, crate::Error> {
let value = value.into_string().map_err(|_| {
let value = ok!(value.into_string().map_err(|_| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
}));

let ignore_case = arg.map(|a| a.is_ignore_case_set()).unwrap_or(false);
if self.0.iter().any(|v| v.matches(&value, ignore_case)) {
Expand Down Expand Up @@ -1233,13 +1233,13 @@ where
arg: Option<&crate::Arg>,
raw_value: &std::ffi::OsStr,
) -> Result<Self::Value, crate::Error> {
let value = raw_value.to_str().ok_or_else(|| {
let value = ok!(raw_value.to_str().ok_or_else(|| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
let value = value.parse::<i64>().map_err(|err| {
}));
let value = ok!(value.parse::<i64>().map_err(|err| {
let arg = arg
.map(|a| a.to_string())
.unwrap_or_else(|| "...".to_owned());
Expand All @@ -1249,7 +1249,7 @@ where
err.into(),
)
.with_cmd(cmd)
})?;
}));
if !self.bounds.contains(&value) {
let arg = arg
.map(|a| a.to_string())
Expand All @@ -1263,7 +1263,7 @@ where
}

let value: Result<Self::Value, _> = value.try_into();
let value = value.map_err(|err| {
let value = ok!(value.map_err(|err| {
let arg = arg
.map(|a| a.to_string())
.unwrap_or_else(|| "...".to_owned());
Expand All @@ -1273,7 +1273,7 @@ where
err.into(),
)
.with_cmd(cmd)
})?;
}));

Ok(value)
}
Expand Down Expand Up @@ -1431,13 +1431,13 @@ where
arg: Option<&crate::Arg>,
raw_value: &std::ffi::OsStr,
) -> Result<Self::Value, crate::Error> {
let value = raw_value.to_str().ok_or_else(|| {
let value = ok!(raw_value.to_str().ok_or_else(|| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
let value = value.parse::<u64>().map_err(|err| {
}));
let value = ok!(value.parse::<u64>().map_err(|err| {
let arg = arg
.map(|a| a.to_string())
.unwrap_or_else(|| "...".to_owned());
Expand All @@ -1447,7 +1447,7 @@ where
err.into(),
)
.with_cmd(cmd)
})?;
}));
if !self.bounds.contains(&value) {
let arg = arg
.map(|a| a.to_string())
Expand All @@ -1461,7 +1461,7 @@ where
}

let value: Result<Self::Value, _> = value.try_into();
let value = value.map_err(|err| {
let value = ok!(value.map_err(|err| {
let arg = arg
.map(|a| a.to_string())
.unwrap_or_else(|| "...".to_owned());
Expand All @@ -1471,7 +1471,7 @@ where
err.into(),
)
.with_cmd(cmd)
})?;
}));

Ok(value)
}
Expand Down Expand Up @@ -1622,12 +1622,12 @@ impl TypedValueParser for FalseyValueParser {
_arg: Option<&crate::Arg>,
value: &std::ffi::OsStr,
) -> Result<Self::Value, crate::Error> {
let value = value.to_str().ok_or_else(|| {
let value = ok!(value.to_str().ok_or_else(|| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
}));
let value = if value.is_empty() {
false
} else {
Expand Down Expand Up @@ -1719,19 +1719,19 @@ impl TypedValueParser for BoolishValueParser {
arg: Option<&crate::Arg>,
value: &std::ffi::OsStr,
) -> Result<Self::Value, crate::Error> {
let value = value.to_str().ok_or_else(|| {
let value = ok!(value.to_str().ok_or_else(|| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
let value = crate::util::str_to_bool(value).ok_or_else(|| {
}));
let value = ok!(crate::util::str_to_bool(value).ok_or_else(|| {
let arg = arg
.map(|a| a.to_string())
.unwrap_or_else(|| "...".to_owned());
crate::Error::value_validation(arg, value.to_owned(), "value was not a boolean".into())
.with_cmd(cmd)
})?;
}));
Ok(value)
}

Expand Down Expand Up @@ -1808,12 +1808,12 @@ impl TypedValueParser for NonEmptyStringValueParser {
.unwrap_or_else(|| "...".to_owned()),
));
}
let value = value.to_str().ok_or_else(|| {
let value = ok!(value.to_str().ok_or_else(|| {
crate::Error::invalid_utf8(
cmd,
crate::output::Usage::new(cmd).create_usage_with_title(&[]),
)
})?;
}));
Ok(value.to_owned())
}
}
Expand Down Expand Up @@ -1860,7 +1860,7 @@ where
arg: Option<&crate::Arg>,
value: &std::ffi::OsStr,
) -> Result<Self::Value, crate::Error> {
let value = self.parser.parse_ref(cmd, arg, value)?;
let value = ok!(self.parser.parse_ref(cmd, arg, value));
let value = (self.func)(value);
Ok(value)
}
Expand All @@ -1871,7 +1871,7 @@ where
arg: Option<&crate::Arg>,
value: std::ffi::OsString,
) -> Result<Self::Value, crate::Error> {
let value = self.parser.parse(cmd, arg, value)?;
let value = ok!(self.parser.parse(cmd, arg, value));
let value = (self.func)(value);
Ok(value)
}
Expand Down
6 changes: 3 additions & 3 deletions src/derive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ pub trait Parser: FromArgMatches + CommandFactory + Sized {

/// Parse from `std::env::args_os()`, return Err on error.
fn try_parse() -> Result<Self, Error> {
let mut matches = <Self as CommandFactory>::command().try_get_matches()?;
let mut matches = ok!(<Self as CommandFactory>::command().try_get_matches());
<Self as FromArgMatches>::from_arg_matches_mut(&mut matches).map_err(format_error::<Self>)
}

Expand Down Expand Up @@ -123,7 +123,7 @@ pub trait Parser: FromArgMatches + CommandFactory + Sized {
I: IntoIterator<Item = T>,
T: Into<OsString> + Clone,
{
let mut matches = <Self as CommandFactory>::command().try_get_matches_from(itr)?;
let mut matches = ok!(<Self as CommandFactory>::command().try_get_matches_from(itr));
<Self as FromArgMatches>::from_arg_matches_mut(&mut matches).map_err(format_error::<Self>)
}

Expand All @@ -150,7 +150,7 @@ pub trait Parser: FromArgMatches + CommandFactory + Sized {
T: Into<OsString> + Clone,
{
let mut matches =
<Self as CommandFactory>::command_for_update().try_get_matches_from(itr)?;
ok!(<Self as CommandFactory>::command_for_update().try_get_matches_from(itr));
<Self as FromArgMatches>::update_from_arg_matches_mut(self, &mut matches)
.map_err(format_error::<Self>)
}
Expand Down
8 changes: 4 additions & 4 deletions src/error/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -694,11 +694,11 @@ impl<F: ErrorFormatter> error::Error for Error<F> {
impl<F: ErrorFormatter> Display for Error<F> {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
// Assuming `self.message` already has a trailing newline, from `try_help` or similar
write!(f, "{}", self.formatted())?;
ok!(write!(f, "{}", self.formatted()));
if let Some(backtrace) = self.inner.backtrace.as_ref() {
writeln!(f)?;
writeln!(f, "Backtrace:")?;
writeln!(f, "{}", backtrace)?;
ok!(writeln!(f));
ok!(writeln!(f, "Backtrace:"));
ok!(writeln!(f, "{}", backtrace));
}
Ok(())
}
Expand Down

0 comments on commit 7998669

Please sign in to comment.