Avoid `let def_id.clone()` to translate `&LocalDefId` into `LocalDefId`.

Before this CL, extracting toposort dependencies looked like this:

    ```
    let deps = bindings.iter().flat_map(|(def_id, snippet)| {
        let def_id = def_id.clone();
        snippet.cc.prereqs.defs.iter().copied().map(move |predecessor| {
            toposort::Dependency { predecessor, successor: def_id }
        })
    });
    ```

Above the `let def_id = def_id.clone` changes the type of `def_id`
from `&LocalDefId` to `LocalDefId`, but in a rather roundabout way.

After this CL, we get `LocalDefId` by value in a more direct way
(note the extra `&` before the lambda's parameter):

    ```
    let deps = bindings.iter().flat_map(|(&successor, snippet)| {
        snippet.cc.prereqs.defs.iter().copied().map(move |predecessor| {
            toposort::Dependency { predecessor, successor }
        })
    });
    ```

(The CL also makes some other minor changes, including making the code
layout more compact while still keeping `rustfmt` happy.)

PiperOrigin-RevId: 495595924
diff --git a/cc_bindings_from_rs/bindings.rs b/cc_bindings_from_rs/bindings.rs
index 14c9a62..12fc663 100644
--- a/cc_bindings_from_rs/bindings.rs
+++ b/cc_bindings_from_rs/bindings.rs
@@ -973,20 +973,16 @@
     // Find the order of `bindings` that 1) meets the requirements of
     // `CcPrerequisites::defs` and 2) makes a best effort attempt to keep the
     // `bindings` in the same order as the source order of the Rust APIs.
-    let toposort::TopoSortResult { ordered, failed } =
-        {
-            let nodes = bindings.keys().copied();
-            let deps =
-                bindings.iter().flat_map(|(def_id, snippet)| {
-                    let def_id = def_id.clone();
-                    snippet.cc.prereqs.defs.iter().copied().map(move |predecessor| {
-                        toposort::Dependency { predecessor, successor: def_id }
-                    })
-                });
-            let preferred_order =
-                |id1: &LocalDefId, id2: &LocalDefId| tcx.def_span(*id1).cmp(&tcx.def_span(*id2));
-            toposort::toposort(nodes, deps, preferred_order)
-        };
+    let toposort::TopoSortResult { ordered, failed } = {
+        let nodes = bindings.keys().copied();
+        let deps = bindings.iter().flat_map(|(&successor, snippet)| {
+            let predecessors = snippet.cc.prereqs.defs.iter().copied();
+            predecessors.map(move |predecessor| toposort::Dependency { predecessor, successor })
+        });
+        let preferred_order =
+            |id1: &LocalDefId, id2: &LocalDefId| tcx.def_span(*id1).cmp(&tcx.def_span(*id2));
+        toposort::toposort(nodes, deps, preferred_order)
+    };
 
     // Neighboring `ordered` items that belong to the same namespace should be put
     // under a single `namespace foo::bar::baz { #items }`.  We don't just translate