diff --git a/crates/cargo-test-macro/src/lib.rs b/crates/cargo-test-macro/src/lib.rs index b16915762a4..dae129ade66 100644 --- a/crates/cargo-test-macro/src/lib.rs +++ b/crates/cargo-test-macro/src/lib.rs @@ -52,7 +52,7 @@ pub fn cargo_test(attr: TokenStream, item: TokenStream) -> TokenStream { )))); } - return ret; + ret } fn contains_ident(t: &TokenStream, ident: &str) -> bool { diff --git a/crates/cargo-test-support/src/lib.rs b/crates/cargo-test-support/src/lib.rs index 6b26d0ed00d..52703fba28d 100644 --- a/crates/cargo-test-support/src/lib.rs +++ b/crates/cargo-test-support/src/lib.rs @@ -105,6 +105,9 @@ dependency. */ +#![allow(clippy::needless_doctest_main)] // according to @ehuss this lint is fussy +#![allow(clippy::inefficient_to_string)] // this causes suggestions that result in `(*s).to_string()` + use std::env; use std::ffi::OsStr; use std::fmt; @@ -1141,9 +1144,9 @@ impl Execs { // Do the template replacements on the expected string. let matcher = match &self.process_builder { - None => matcher.to_string(), + None => matcher, Some(p) => match p.get_cwd() { - None => matcher.to_string(), + None => matcher, Some(cwd) => replace_path(&matcher, cwd, "[CWD]"), }, }; diff --git a/crates/resolver-tests/src/lib.rs b/crates/resolver-tests/src/lib.rs index c77a050758e..f7dbe52c407 100644 --- a/crates/resolver-tests/src/lib.rs +++ b/crates/resolver-tests/src/lib.rs @@ -1,3 +1,6 @@ +#![allow(clippy::many_single_char_names)] +#![allow(clippy::needless_range_loop)] // false positives + use std::cell::RefCell; use std::cmp::PartialEq; use std::cmp::{max, min}; diff --git a/crates/resolver-tests/tests/resolve.rs b/crates/resolver-tests/tests/resolve.rs index 2670efd609f..5fcc3a8a4f3 100644 --- a/crates/resolver-tests/tests/resolve.rs +++ b/crates/resolver-tests/tests/resolve.rs @@ -234,7 +234,7 @@ fn pub_fail() { pkg!(("e", "0.0.6") => [dep_req_kind("a", "<= 0.0.4", Kind::Normal, true),]), pkg!(("kB", "0.0.3") => [dep_req("a", ">= 0.0.5"),dep("e"),]), ]; - let reg = registry(input.clone()); + let reg = registry(input); assert!(resolve_and_validated(vec![dep("kB")], ®, None).is_err()); } diff --git a/src/bin/cargo/main.rs b/src/bin/cargo/main.rs index 1b1f1888d25..b9e7abb6857 100644 --- a/src/bin/cargo/main.rs +++ b/src/bin/cargo/main.rs @@ -1,5 +1,4 @@ #![warn(rust_2018_idioms)] // while we're getting used to 2018 -#![allow(clippy::too_many_arguments)] // large project #![allow(clippy::redundant_closure)] // there's a false positive #![warn(clippy::needless_borrow)] #![warn(clippy::redundant_clone)] diff --git a/src/cargo/core/profiles.rs b/src/cargo/core/profiles.rs index f184ee3e44a..13b2260f024 100644 --- a/src/cargo/core/profiles.rs +++ b/src/cargo/core/profiles.rs @@ -515,7 +515,7 @@ impl ProfileMaker { Some(ref toml) => toml, None => return Ok(()), }; - let overrides = match toml.package.as_ref().or(toml.overrides.as_ref()) { + let overrides = match toml.package.as_ref().or_else(|| toml.overrides.as_ref()) { Some(overrides) => overrides, None => return Ok(()), }; @@ -612,7 +612,7 @@ fn merge_toml_overrides( merge_profile(profile, build_override); } } - if let Some(overrides) = toml.package.as_ref().or(toml.overrides.as_ref()) { + if let Some(overrides) = toml.package.as_ref().or_else(|| toml.overrides.as_ref()) { if !is_member { if let Some(all) = overrides.get(&ProfilePackageSpec::All) { merge_profile(profile, all); diff --git a/src/cargo/core/resolver/encode.rs b/src/cargo/core/resolver/encode.rs index 04d9ebd38b4..aeea43c84f8 100644 --- a/src/cargo/core/resolver/encode.rs +++ b/src/cargo/core/resolver/encode.rs @@ -564,19 +564,20 @@ pub struct EncodeState<'a> { impl<'a> EncodeState<'a> { pub fn new(resolve: &'a Resolve) -> EncodeState<'a> { - let mut counts = None; - if *resolve.version() == ResolveVersion::V2 { + let counts = if *resolve.version() == ResolveVersion::V2 { let mut map = HashMap::new(); for id in resolve.iter() { let slot = map .entry(id.name()) - .or_insert(HashMap::new()) + .or_insert_with(HashMap::new) .entry(id.version()) .or_insert(0); *slot += 1; } - counts = Some(map); - } + Some(map) + } else { + None + }; EncodeState { counts } } } diff --git a/src/cargo/lib.rs b/src/cargo/lib.rs index 3adb0c1e968..0c214c3d38b 100644 --- a/src/cargo/lib.rs +++ b/src/cargo/lib.rs @@ -17,6 +17,7 @@ #![allow(clippy::type_complexity)] // there's an exceptionally complex type #![allow(clippy::wrong_self_convention)] // perhaps `Rc` should be special-cased in Clippy? #![allow(clippy::write_with_newline)] // too pedantic +#![allow(clippy::inefficient_to_string)] // this causes suggestions that result in `(*s).to_string()` #![warn(clippy::needless_borrow)] #![warn(clippy::redundant_clone)] // Unit is now interned, and would probably be better as pass-by-copy, but diff --git a/src/cargo/ops/registry.rs b/src/cargo/ops/registry.rs index 1d81c04c6c7..4bea42704c6 100644 --- a/src/cargo/ops/registry.rs +++ b/src/cargo/ops/registry.rs @@ -371,13 +371,18 @@ fn registry( let mut src = RegistrySource::remote(sid, &HashSet::new(), config); // Only update the index if the config is not available or `force` is set. let cfg = src.config(); - let cfg = if force_update || cfg.is_err() { + let mut updated_cfg = || { src.update() .chain_err(|| format!("failed to update {}", sid))?; - cfg.or_else(|_| src.config())? + src.config() + }; + + let cfg = if force_update { + updated_cfg()? } else { - cfg.unwrap() + cfg.or_else(|_| updated_cfg())? }; + cfg.and_then(|cfg| cfg.api) .ok_or_else(|| format_err!("{} does not support API commands", sid))? }; diff --git a/src/cargo/util/config/de.rs b/src/cargo/util/config/de.rs index 4471727db0c..0824e4629d1 100644 --- a/src/cargo/util/config/de.rs +++ b/src/cargo/util/config/de.rs @@ -254,7 +254,7 @@ impl<'de, 'config> de::MapAccess<'de> for ConfigMapAccess<'config> { }; let result = seed.deserialize(name.into_deserializer()).map(Some); self.next = Some(key); - return result; + result } None => Ok(None), } @@ -273,7 +273,7 @@ impl<'de, 'config> de::MapAccess<'de> for ConfigMapAccess<'config> { key: self.de.key.clone(), }); self.de.key.pop(); - return result; + result } } diff --git a/src/cargo/util/config/key.rs b/src/cargo/util/config/key.rs index 9fabe9a00fb..42c82bd2769 100644 --- a/src/cargo/util/config/key.rs +++ b/src/cargo/util/config/key.rs @@ -46,7 +46,7 @@ impl ConfigKey { for part in key.split('.') { cfg.push(part); } - return cfg; + cfg } /// Pushes a new sub-key on this `ConfigKey`. This sub-key should be diff --git a/src/cargo/util/network.rs b/src/cargo/util/network.rs index 7637c1c2a46..74cb770a093 100644 --- a/src/cargo/util/network.rs +++ b/src/cargo/util/network.rs @@ -112,7 +112,7 @@ fn with_retry_repeats_the_call_then_works() { let config = Config::default().unwrap(); *config.shell() = Shell::from_write(Box::new(Vec::new())); let result = with_retry(&config, || results.pop().unwrap()); - assert_eq!(result.unwrap(), ()) + assert!(result.is_ok()) } #[test] @@ -135,7 +135,7 @@ fn with_retry_finds_nested_spurious_errors() { let config = Config::default().unwrap(); *config.shell() = Shell::from_write(Box::new(Vec::new())); let result = with_retry(&config, || results.pop().unwrap()); - assert_eq!(result.unwrap(), ()) + assert!(result.is_ok()) } #[test] diff --git a/tests/testsuite/main.rs b/tests/testsuite/main.rs index 75048c5378a..280fe025653 100644 --- a/tests/testsuite/main.rs +++ b/tests/testsuite/main.rs @@ -3,6 +3,8 @@ #![allow(clippy::blacklisted_name)] #![allow(clippy::explicit_iter_loop)] #![allow(clippy::redundant_closure)] +#![allow(clippy::block_in_if_condition_stmt)] // clippy doesn't agree with rustfmt 😂 +#![allow(clippy::inefficient_to_string)] // this causes suggestions that result in `(*s).to_string()` #![warn(clippy::needless_borrow)] #![warn(clippy::redundant_clone)]