Short-circuit boolean operation

This commit is contained in:
Jacob Pratt 2021-01-10 03:05:52 -05:00
parent bd8a903548
commit 22566ecd1b
No known key found for this signature in database
GPG Key ID: B80E19E4662B5AA4

View File

@ -354,17 +354,21 @@ fn is_argument_similar_to_param_name(
match get_string_representation(argument) {
None => false,
Some(argument_string) => {
// Does the argument name begin with the parameter name? Ignore leading underscores.
let mut arg_bytes = argument_string.bytes().skip_while(|&c| c == b'_');
let starts_with_pattern = param_name.bytes().all(
|expected| matches!(arg_bytes.next(), Some(actual) if expected.eq_ignore_ascii_case(&actual)),
);
let mut arg_bytes = argument_string.bytes();
let ends_with_pattern = param_name.bytes().rev().all(
|expected| matches!(arg_bytes.next_back(), Some(actual) if expected.eq_ignore_ascii_case(&actual)),
);
if starts_with_pattern {
return true;
}
starts_with_pattern || ends_with_pattern
// Does the argument name end with the parameter name?
let mut arg_bytes = argument_string.bytes();
param_name.bytes().rev().all(
|expected| matches!(arg_bytes.next_back(), Some(actual) if expected.eq_ignore_ascii_case(&actual)),
)
}
}
}