diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs
index 9e96015d306e4..ace2459728838 100644
--- a/src/librustdoc/clean/utils.rs
+++ b/src/librustdoc/clean/utils.rs
@@ -208,10 +208,10 @@ pub fn get_real_types(
                             if !adds.is_empty() {
                                 res.extend(adds);
                             } else if !ty.is_full_generic() {
-                                if let Some(did) = ty.def_id() {
-                                    if let Some(kind) = cx.tcx.def_kind(did).clean(cx) {
-                                        res.insert((ty, kind));
-                                    }
+                                if let Some(kind) =
+                                    ty.def_id().and_then(|did| cx.tcx.def_kind(did).clean(cx))
+                                {
+                                    res.insert((ty, kind));
                                 }
                             }
                         }
@@ -226,20 +226,18 @@ pub fn get_real_types(
                     if !adds.is_empty() {
                         res.extend(adds);
                     } else if !ty.is_full_generic() {
-                        if let Some(did) = ty.def_id() {
-                            if let Some(kind) = cx.tcx.def_kind(did).clean(cx) {
-                                res.insert((ty.clone(), kind));
-                            }
+                        if let Some(kind) =
+                            ty.def_id().and_then(|did| cx.tcx.def_kind(did).clean(cx))
+                        {
+                            res.insert((ty.clone(), kind));
                         }
                     }
                 }
             }
         }
     } else {
-        if let Some(did) = arg.def_id() {
-            if let Some(kind) = cx.tcx.def_kind(did).clean(cx) {
-                res.insert((arg.clone(), kind));
-            }
+        if let Some(kind) = arg.def_id().and_then(|did| cx.tcx.def_kind(did).clean(cx)) {
+            res.insert((arg.clone(), kind));
         }
         if let Some(gens) = arg.generics() {
             for gen in gens.iter() {
@@ -248,10 +246,10 @@ pub fn get_real_types(
                     if !adds.is_empty() {
                         res.extend(adds);
                     }
-                } else if let Some(did) = gen.def_id() {
-                    if let Some(kind) = cx.tcx.def_kind(did).clean(cx) {
-                        res.insert((gen.clone(), kind));
-                    }
+                } else if let Some(kind) =
+                    gen.def_id().and_then(|did| cx.tcx.def_kind(did).clean(cx))
+                {
+                    res.insert((gen.clone(), kind));
                 }
             }
         }
@@ -277,10 +275,8 @@ pub fn get_all_types(
         if !args.is_empty() {
             all_types.extend(args);
         } else {
-            if let Some(did) = arg.type_.def_id() {
-                if let Some(kind) = cx.tcx.def_kind(did).clean(cx) {
-                    all_types.insert((arg.type_.clone(), kind));
-                }
+            if let Some(kind) = arg.type_.def_id().and_then(|did| cx.tcx.def_kind(did).clean(cx)) {
+                all_types.insert((arg.type_.clone(), kind));
             }
         }
     }
@@ -289,10 +285,10 @@ pub fn get_all_types(
         FnRetTy::Return(ref return_type) => {
             let mut ret = get_real_types(generics, &return_type, cx, 0);
             if ret.is_empty() {
-                if let Some(did) = return_type.def_id() {
-                    if let Some(kind) = cx.tcx.def_kind(did).clean(cx) {
-                        ret.insert((return_type.clone(), kind));
-                    }
+                if let Some(kind) =
+                    return_type.def_id().and_then(|did| cx.tcx.def_kind(did).clean(cx))
+                {
+                    ret.insert((return_type.clone(), kind));
                 }
             }
             ret.into_iter().collect()
diff --git a/src/librustdoc/html/render/cache.rs b/src/librustdoc/html/render/cache.rs
index d9f6f7b466a1f..a8efb16a1d31e 100644
--- a/src/librustdoc/html/render/cache.rs
+++ b/src/librustdoc/html/render/cache.rs
@@ -697,11 +697,11 @@ fn get_generics(clean_type: &clean::Type) -> Option<Vec<Generic>> {
         let r = types
             .iter()
             .filter_map(|t| {
-                if let Some(name) = get_index_type_name(t, false) {
-                    Some(Generic { name: name.to_ascii_lowercase(), defid: t.def_id(), idx: None })
-                } else {
-                    None
-                }
+                get_index_type_name(t, false).map(|name| Generic {
+                    name: name.to_ascii_lowercase(),
+                    defid: t.def_id(),
+                    idx: None,
+                })
             })
             .collect::<Vec<_>>();
         if r.is_empty() { None } else { Some(r) }