Utilize ?
instead of return None
.
This commit is contained in:
parent
f32f1113c9
commit
9012af6f19
12 changed files with 26 additions and 68 deletions
|
@ -536,10 +536,9 @@ fn next_code_point_reverse<'a, I>(bytes: &mut I) -> Option<u32>
|
||||||
where I: DoubleEndedIterator<Item = &'a u8>,
|
where I: DoubleEndedIterator<Item = &'a u8>,
|
||||||
{
|
{
|
||||||
// Decode UTF-8
|
// Decode UTF-8
|
||||||
let w = match bytes.next_back() {
|
let w = match *bytes.next_back()? {
|
||||||
None => return None,
|
next_byte if next_byte < 128 => return Some(next_byte as u32),
|
||||||
Some(&next_byte) if next_byte < 128 => return Some(next_byte as u32),
|
back_byte => back_byte,
|
||||||
Some(&back_byte) => back_byte,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Multibyte case follows
|
// Multibyte case follows
|
||||||
|
|
|
@ -592,10 +592,7 @@ impl<'tcx> ScopeTree {
|
||||||
return Some(scope.item_local_id());
|
return Some(scope.item_local_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
match self.opt_encl_scope(scope) {
|
scope = self.opt_encl_scope(scope)?;
|
||||||
None => return None,
|
|
||||||
Some(parent) => scope = parent,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,14 +67,13 @@ impl<'a> Iterator for Iter<'a> {
|
||||||
|
|
||||||
fn next(&mut self) -> Option<(&'a Path, PathKind)> {
|
fn next(&mut self) -> Option<(&'a Path, PathKind)> {
|
||||||
loop {
|
loop {
|
||||||
match self.iter.next() {
|
match *self.iter.next()? {
|
||||||
Some(&(kind, ref p)) if self.kind == PathKind::All ||
|
(kind, ref p) if self.kind == PathKind::All ||
|
||||||
kind == PathKind::All ||
|
kind == PathKind::All ||
|
||||||
kind == self.kind => {
|
kind == self.kind => {
|
||||||
return Some((p, kind))
|
return Some((p, kind))
|
||||||
}
|
}
|
||||||
Some(..) => {}
|
_ => {}
|
||||||
None => return None,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ pub fn copy_cgu_workproducts_to_incr_comp_cache_dir(
|
||||||
return None
|
return None
|
||||||
}
|
}
|
||||||
|
|
||||||
let saved_files: Option<Vec<_>> =
|
let saved_files =
|
||||||
files.iter()
|
files.iter()
|
||||||
.map(|&(kind, ref path)| {
|
.map(|&(kind, ref path)| {
|
||||||
let extension = match kind {
|
let extension = match kind {
|
||||||
|
@ -51,11 +51,7 @@ pub fn copy_cgu_workproducts_to_incr_comp_cache_dir(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect();
|
.collect::<Option<Vec<_>>>()?;
|
||||||
let saved_files = match saved_files {
|
|
||||||
None => return None,
|
|
||||||
Some(v) => v,
|
|
||||||
};
|
|
||||||
|
|
||||||
let work_product = WorkProduct {
|
let work_product = WorkProduct {
|
||||||
cgu_name: cgu_name.to_string(),
|
cgu_name: cgu_name.to_string(),
|
||||||
|
|
|
@ -87,10 +87,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||||
impl<'cx, 'gcx, 'tcx> Iterator for Prefixes<'cx, 'gcx, 'tcx> {
|
impl<'cx, 'gcx, 'tcx> Iterator for Prefixes<'cx, 'gcx, 'tcx> {
|
||||||
type Item = &'cx Place<'tcx>;
|
type Item = &'cx Place<'tcx>;
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
let mut cursor = match self.next {
|
let mut cursor = self.next?;
|
||||||
None => return None,
|
|
||||||
Some(place) => place,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Post-processing `place`: Enqueue any remaining
|
// Post-processing `place`: Enqueue any remaining
|
||||||
// work. Also, `place` may not be a prefix itself, but
|
// work. Also, `place` may not be a prefix itself, but
|
||||||
|
|
|
@ -3923,10 +3923,7 @@ pub fn path_to_def_local(tcx: &TyCtxt, path: &[&str]) -> Option<DefId> {
|
||||||
let mut path_it = path.iter().peekable();
|
let mut path_it = path.iter().peekable();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let segment = match path_it.next() {
|
let segment = path_it.next()?;
|
||||||
Some(segment) => segment,
|
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
|
|
||||||
for item_id in mem::replace(&mut items, HirVec::new()).iter() {
|
for item_id in mem::replace(&mut items, HirVec::new()).iter() {
|
||||||
let item = tcx.hir.expect_item(item_id.id);
|
let item = tcx.hir.expect_item(item_id.id);
|
||||||
|
@ -3961,10 +3958,7 @@ pub fn path_to_def(tcx: &TyCtxt, path: &[&str]) -> Option<DefId> {
|
||||||
let mut path_it = path.iter().skip(1).peekable();
|
let mut path_it = path.iter().skip(1).peekable();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let segment = match path_it.next() {
|
let segment = path_it.next()?;
|
||||||
Some(segment) => segment,
|
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
|
|
||||||
for item in mem::replace(&mut items, Lrc::new(vec![])).iter() {
|
for item in mem::replace(&mut items, Lrc::new(vec![])).iter() {
|
||||||
if item.ident.name == *segment {
|
if item.ident.name == *segment {
|
||||||
|
|
|
@ -2079,13 +2079,13 @@ impl<'a> Item<'a> {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let (krate, src_root) = match cache.extern_locations.get(&self.item.def_id.krate) {
|
let (krate, src_root) = match *cache.extern_locations.get(&self.item.def_id.krate)? {
|
||||||
Some(&(ref name, ref src, Local)) => (name, src),
|
(ref name, ref src, Local) => (name, src),
|
||||||
Some(&(ref name, ref src, Remote(ref s))) => {
|
(ref name, ref src, Remote(ref s)) => {
|
||||||
root = s.to_string();
|
root = s.to_string();
|
||||||
(name, src)
|
(name, src)
|
||||||
}
|
}
|
||||||
Some(&(_, _, Unknown)) | None => return None,
|
(_, _, Unknown) => return None,
|
||||||
};
|
};
|
||||||
|
|
||||||
clean_srcpath(&src_root, file, false, |component| {
|
clean_srcpath(&src_root, file, false, |component| {
|
||||||
|
|
|
@ -91,10 +91,7 @@ pub fn parse_prefix<'a>(path: &'a OsStr) -> Option<Prefix> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_two_comps(mut path: &[u8], f: fn(u8) -> bool) -> Option<(&[u8], &[u8])> {
|
fn parse_two_comps(mut path: &[u8], f: fn(u8) -> bool) -> Option<(&[u8], &[u8])> {
|
||||||
let first = match path.iter().position(|x| f(*x)) {
|
let first = &path[..path.iter().position(|x| f(*x))?];
|
||||||
None => return None,
|
|
||||||
Some(x) => &path[..x],
|
|
||||||
};
|
|
||||||
path = &path[(first.len() + 1)..];
|
path = &path[(first.len() + 1)..];
|
||||||
let idx = path.iter().position(|x| f(*x));
|
let idx = path.iter().position(|x| f(*x));
|
||||||
let second = &path[..idx.unwrap_or(path.len())];
|
let second = &path[..idx.unwrap_or(path.len())];
|
||||||
|
|
|
@ -753,10 +753,7 @@ where It: Iterator {
|
||||||
type Item = Vec<It::Item>;
|
type Item = Vec<It::Item>;
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Vec<It::Item>> {
|
fn next(&mut self) -> Option<Vec<It::Item>> {
|
||||||
let first = match self.it.next() {
|
let first = self.it.next()?;
|
||||||
Some(e) => e,
|
|
||||||
None => return None
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut result = Vec::with_capacity(self.n);
|
let mut result = Vec::with_capacity(self.n);
|
||||||
result.push(first);
|
result.push(first);
|
||||||
|
|
|
@ -119,10 +119,7 @@ fn parse_expected(
|
||||||
line: &str,
|
line: &str,
|
||||||
tag: &str,
|
tag: &str,
|
||||||
) -> Option<(WhichLine, Error)> {
|
) -> Option<(WhichLine, Error)> {
|
||||||
let start = match line.find(tag) {
|
let start = line.find(tag)?;
|
||||||
Some(i) => i,
|
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
let (follow, adjusts) = if line[start + tag.len()..].chars().next().unwrap() == '|' {
|
let (follow, adjusts) = if line[start + tag.len()..].chars().next().unwrap() == '|' {
|
||||||
(true, 0)
|
(true, 0)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -684,14 +684,8 @@ impl Config {
|
||||||
|
|
||||||
fn parse_custom_normalization(&self, mut line: &str, prefix: &str) -> Option<(String, String)> {
|
fn parse_custom_normalization(&self, mut line: &str, prefix: &str) -> Option<(String, String)> {
|
||||||
if self.parse_cfg_name_directive(line, prefix) == ParsedNameDirective::Match {
|
if self.parse_cfg_name_directive(line, prefix) == ParsedNameDirective::Match {
|
||||||
let from = match parse_normalization_string(&mut line) {
|
let from = parse_normalization_string(&mut line)?;
|
||||||
Some(s) => s,
|
let to = parse_normalization_string(&mut line)?;
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
let to = match parse_normalization_string(&mut line) {
|
|
||||||
Some(s) => s,
|
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
Some((from, to))
|
Some((from, to))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
@ -850,14 +844,8 @@ fn expand_variables(mut value: String, config: &Config) -> String {
|
||||||
/// ```
|
/// ```
|
||||||
fn parse_normalization_string(line: &mut &str) -> Option<String> {
|
fn parse_normalization_string(line: &mut &str) -> Option<String> {
|
||||||
// FIXME support escapes in strings.
|
// FIXME support escapes in strings.
|
||||||
let begin = match line.find('"') {
|
let begin = line.find('"')? + 1;
|
||||||
Some(i) => i + 1,
|
let end = line[begin..].find('"')? + begin;
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
let end = match line[begin..].find('"') {
|
|
||||||
Some(i) => i + begin,
|
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
let result = line[begin..end].to_owned();
|
let result = line[begin..end].to_owned();
|
||||||
*line = &line[end + 1..];
|
*line = &line[end + 1..];
|
||||||
Some(result)
|
Some(result)
|
||||||
|
|
|
@ -332,10 +332,7 @@ fn maybe_redirect(source: &str) -> Option<String> {
|
||||||
const REDIRECT: &'static str = "<p>Redirecting to <a href=";
|
const REDIRECT: &'static str = "<p>Redirecting to <a href=";
|
||||||
|
|
||||||
let mut lines = source.lines();
|
let mut lines = source.lines();
|
||||||
let redirect_line = match lines.nth(6) {
|
let redirect_line = lines.nth(6)?;
|
||||||
Some(l) => l,
|
|
||||||
None => return None,
|
|
||||||
};
|
|
||||||
|
|
||||||
redirect_line.find(REDIRECT).map(|i| {
|
redirect_line.find(REDIRECT).map(|i| {
|
||||||
let rest = &redirect_line[(i + REDIRECT.len() + 1)..];
|
let rest = &redirect_line[(i + REDIRECT.len() + 1)..];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue