Rollup merge of #52658 - Wallacoloo:topics/use-option-methods, r=cramertj
Prefer `Option::map`/etc over `match` wherever it improves clarity This isn't intended to change behavior anywhere. A lot of times statements like `match x { None => None, Some(y) => [...] }` can be rewritten using `Option::map` or `Option::and_then` in a way that preserves or improves clarity, so that's what I've done here. I think it's particularly valuable to keep things in `libcore` and `libstd` pretty/idiomatic since it's not uncommon to follow the `[src]` links when browsing the rust-lang.org docs for std/core. If there's any concern about pushing style-based changes though, I'll happily back out the non-std/core commits here.
This commit is contained in:
commit
c7a178ea5f
8 changed files with 30 additions and 51 deletions
|
@ -696,13 +696,10 @@ impl<'a> Iterator for CharIndices<'a> {
|
|||
impl<'a> DoubleEndedIterator for CharIndices<'a> {
|
||||
#[inline]
|
||||
fn next_back(&mut self) -> Option<(usize, char)> {
|
||||
match self.iter.next_back() {
|
||||
None => None,
|
||||
Some(ch) => {
|
||||
let index = self.front_offset + self.iter.iter.len();
|
||||
Some((index, ch))
|
||||
}
|
||||
}
|
||||
self.iter.next_back().map(|ch| {
|
||||
let index = self.front_offset + self.iter.iter.len();
|
||||
(index, ch)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -190,11 +190,10 @@ impl<'a, 'gcx, 'tcx> OnUnimplementedDirective {
|
|||
for command in self.subcommands.iter().chain(Some(self)).rev() {
|
||||
if let Some(ref condition) = command.condition {
|
||||
if !attr::eval_condition(condition, &tcx.sess.parse_sess, &mut |c| {
|
||||
options.contains(&(c.name().as_str().to_string(),
|
||||
match c.value_str().map(|s| s.as_str().to_string()) {
|
||||
Some(s) => Some(s),
|
||||
None => None
|
||||
}))
|
||||
options.contains(&(
|
||||
c.name().as_str().to_string(),
|
||||
c.value_str().map(|s| s.as_str().to_string())
|
||||
))
|
||||
}) {
|
||||
debug!("evaluate: skipping {:?} due to condition", command);
|
||||
continue
|
||||
|
|
|
@ -2697,15 +2697,12 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
|
|||
self.opt_associated_item(def_id)
|
||||
};
|
||||
|
||||
match item {
|
||||
Some(trait_item) => {
|
||||
match trait_item.container {
|
||||
TraitContainer(_) => None,
|
||||
ImplContainer(def_id) => Some(def_id),
|
||||
}
|
||||
item.and_then(|trait_item|
|
||||
match trait_item.container {
|
||||
TraitContainer(_) => None,
|
||||
ImplContainer(def_id) => Some(def_id),
|
||||
}
|
||||
None => None
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/// Looks up the span of `impl_did` if the impl is local; otherwise returns `Err`
|
||||
|
|
|
@ -824,17 +824,14 @@ impl<'a> Context<'a> {
|
|||
if rlib.is_none() && rmeta.is_none() && dylib.is_none() {
|
||||
return None;
|
||||
}
|
||||
match slot {
|
||||
Some((_, metadata)) => {
|
||||
Some(Library {
|
||||
dylib,
|
||||
rlib,
|
||||
rmeta,
|
||||
metadata,
|
||||
})
|
||||
slot.map(|(_, metadata)|
|
||||
Library {
|
||||
dylib,
|
||||
rlib,
|
||||
rmeta,
|
||||
metadata,
|
||||
}
|
||||
None => None,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,10 +53,7 @@ impl<'a> Parser<'a> {
|
|||
F: FnOnce(&mut Parser) -> Option<T>,
|
||||
{
|
||||
self.read_atomically(move |p| {
|
||||
match cb(p) {
|
||||
Some(x) => if p.is_eof() {Some(x)} else {None},
|
||||
None => None,
|
||||
}
|
||||
cb(p).filter(|_| p.is_eof())
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -1065,10 +1065,7 @@ impl<'a> Iterator for Ancestors<'a> {
|
|||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let next = self.next;
|
||||
self.next = match next {
|
||||
Some(path) => path.parent(),
|
||||
None => None,
|
||||
};
|
||||
self.next = next.and_then(Path::parent);
|
||||
next
|
||||
}
|
||||
}
|
||||
|
|
|
@ -156,16 +156,15 @@ pub fn log_enabled() -> Option<PrintFormat> {
|
|||
_ => return Some(PrintFormat::Full),
|
||||
}
|
||||
|
||||
let val = match env::var_os("RUST_BACKTRACE") {
|
||||
Some(x) => if &x == "0" {
|
||||
let val = env::var_os("RUST_BACKTRACE").and_then(|x|
|
||||
if &x == "0" {
|
||||
None
|
||||
} else if &x == "full" {
|
||||
Some(PrintFormat::Full)
|
||||
} else {
|
||||
Some(PrintFormat::Short)
|
||||
},
|
||||
None => None,
|
||||
};
|
||||
}
|
||||
);
|
||||
ENABLED.store(match val {
|
||||
Some(v) => v as isize,
|
||||
None => 1,
|
||||
|
|
|
@ -138,17 +138,13 @@ pub fn nil_ty<'r>() -> Ty<'r> {
|
|||
}
|
||||
|
||||
fn mk_lifetime(cx: &ExtCtxt, span: Span, lt: &Option<&str>) -> Option<ast::Lifetime> {
|
||||
match *lt {
|
||||
Some(s) => Some(cx.lifetime(span, Ident::from_str(s))),
|
||||
None => None,
|
||||
}
|
||||
lt.map(|s|
|
||||
cx.lifetime(span, Ident::from_str(s))
|
||||
)
|
||||
}
|
||||
|
||||
fn mk_lifetimes(cx: &ExtCtxt, span: Span, lt: &Option<&str>) -> Vec<ast::Lifetime> {
|
||||
match *lt {
|
||||
Some(s) => vec![cx.lifetime(span, Ident::from_str(s))],
|
||||
None => vec![],
|
||||
}
|
||||
mk_lifetime(cx, span, lt).into_iter().collect()
|
||||
}
|
||||
|
||||
impl<'a> Ty<'a> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue