From dfe4e670b1d5a6aa981c9958d899e37ee58bfed1 Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Thu, 18 Feb 2021 12:16:23 +0800 Subject: [PATCH] refactor: make deref intentions more clear --- src/cargo/core/manifest.rs | 2 +- src/cargo/core/source/mod.rs | 12 ++---------- src/cargo/ops/lockfile.rs | 2 +- src/cargo/ops/vendor.rs | 5 +---- 4 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/cargo/core/manifest.rs b/src/cargo/core/manifest.rs index 330e07f0627..458ab128170 100644 --- a/src/cargo/core/manifest.rs +++ b/src/cargo/core/manifest.rs @@ -285,7 +285,7 @@ impl ser::Serialize for Target { edition: &self.edition().to_string(), required_features: self .required_features() - .map(|rf| rf.iter().map(|s| &**s).collect()), + .map(|rf| rf.iter().map(|s| s.as_str()).collect()), doc: self.documented(), doctest: self.doctested() && self.doctestable(), test: self.tested(), diff --git a/src/cargo/core/source/mod.rs b/src/cargo/core/source/mod.rs index f61e9636374..81009ea6529 100644 --- a/src/cargo/core/source/mod.rs +++ b/src/cargo/core/source/mod.rs @@ -271,20 +271,12 @@ impl<'src> SourceMap<'src> { /// Like `HashMap::get`. pub fn get(&self, id: SourceId) -> Option<&(dyn Source + 'src)> { - let source = self.map.get(&id); - - source.map(|s| { - let s: &(dyn Source + 'src) = &**s; - s - }) + self.map.get(&id).map(|s| s.as_ref()) } /// Like `HashMap::get_mut`. pub fn get_mut(&mut self, id: SourceId) -> Option<&mut (dyn Source + 'src)> { - self.map.get_mut(&id).map(|s| { - let s: &mut (dyn Source + 'src) = &mut **s; - s - }) + self.map.get_mut(&id).map(|s| s.as_mut()) } /// Like `HashMap::get`, but first calculates the `SourceId` from a `PackageId`. diff --git a/src/cargo/ops/lockfile.rs b/src/cargo/ops/lockfile.rs index 4cf82d0cee4..7fca8d87279 100644 --- a/src/cargo/ops/lockfile.rs +++ b/src/cargo/ops/lockfile.rs @@ -96,7 +96,7 @@ fn resolve_to_string_orig( f.read_to_string(&mut s)?; Ok(s) }); - let out = serialize_resolve(resolve, orig.as_ref().ok().map(|s| &**s)); + let out = serialize_resolve(resolve, orig.as_deref().ok()); (orig.ok(), out, ws_root) } diff --git a/src/cargo/ops/vendor.rs b/src/cargo/ops/vendor.rs index f7c0acfc36f..7c4a8f1050e 100644 --- a/src/cargo/ops/vendor.rs +++ b/src/cargo/ops/vendor.rs @@ -74,10 +74,7 @@ fn sync( opts: &VendorOptions<'_>, ) -> CargoResult { let canonical_destination = opts.destination.canonicalize(); - let canonical_destination = canonical_destination - .as_ref() - .map(|p| &**p) - .unwrap_or(opts.destination); + let canonical_destination = canonical_destination.as_deref().unwrap_or(opts.destination); paths::create_dir_all(&canonical_destination)?; let mut to_remove = HashSet::new();