[INFO] crate tusk_data 0.0.1 is already in cache [INFO] extracting crate tusk_data 0.0.1 into work/ex/clippy-test-run/sources/stable/reg/tusk_data/0.0.1 [INFO] extracting crate tusk_data 0.0.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tusk_data/0.0.1 [INFO] validating manifest of tusk_data-0.0.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of tusk_data-0.0.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing tusk_data-0.0.1 [INFO] finished frobbing tusk_data-0.0.1 [INFO] frobbed toml for tusk_data-0.0.1 written to work/ex/clippy-test-run/sources/stable/reg/tusk_data/0.0.1/Cargo.toml [INFO] started frobbing tusk_data-0.0.1 [INFO] finished frobbing tusk_data-0.0.1 [INFO] frobbed toml for tusk_data-0.0.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tusk_data/0.0.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting tusk_data-0.0.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/tusk_data/0.0.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 429cf81239aa14e48876919e5055c39f5b658981185dab9626f58ffa5e022952 [INFO] running `"docker" "start" "-a" "429cf81239aa14e48876919e5055c39f5b658981185dab9626f58ffa5e022952"` [INFO] [stderr] Checking criterion-plot v0.3.0 [INFO] [stderr] Checking rand_xoshiro v0.1.0 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Checking tinytemplate v1.0.1 [INFO] [stderr] Checking uuid v0.7.2 [INFO] [stderr] Checking criterion v0.2.9 [INFO] [stderr] Checking tusk_data v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/apm/types.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / return match self { [INFO] [stderr] 26 | | MetricTypes::Gauge(x) => MetricTypes::Gauge(x.sqrt()), [INFO] [stderr] 27 | | MetricTypes::Summary(x) => { [INFO] [stderr] 28 | | MetricTypes::Summary(x.iter().map(|(k, v)| (k.clone(), v.sqrt())).collect()) [INFO] [stderr] 29 | | } [INFO] [stderr] 30 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 31 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 25 | match self { [INFO] [stderr] 26 | MetricTypes::Gauge(x) => MetricTypes::Gauge(x.sqrt()), [INFO] [stderr] 27 | MetricTypes::Summary(x) => { [INFO] [stderr] 28 | MetricTypes::Summary(x.iter().map(|(k, v)| (k.clone(), v.sqrt())).collect()) [INFO] [stderr] 29 | } [INFO] [stderr] 30 | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / return match (self, rhs) { [INFO] [stderr] 39 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x + y), [INFO] [stderr] 40 | | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 41 | | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] ... | [INFO] [stderr] 57 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 58 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 38 | match (self, rhs) { [INFO] [stderr] 39 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x + y), [INFO] [stderr] 40 | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 41 | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] 42 | // if they don't then pretend the RHS is 0. [INFO] [stderr] 43 | let mut summary = x.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | / return match (self, rhs) { [INFO] [stderr] 66 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x - y), [INFO] [stderr] 67 | | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 68 | | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] ... | [INFO] [stderr] 84 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 85 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 65 | match (self, rhs) { [INFO] [stderr] 66 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x - y), [INFO] [stderr] 67 | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 68 | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] 69 | // if they don't then pretend the RHS is 0. [INFO] [stderr] 70 | let mut summary = x.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / return match (self, rhs) { [INFO] [stderr] 93 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x * y), [INFO] [stderr] 94 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 95 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 92 | match (self, rhs) { [INFO] [stderr] 93 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x * y), [INFO] [stderr] 94 | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 95 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | / return match (self, rhs) { [INFO] [stderr] 103 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x / y), [INFO] [stderr] 104 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 105 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 102 | match (self, rhs) { [INFO] [stderr] 103 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x / y), [INFO] [stderr] 104 | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 105 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / return match (self, other) { [INFO] [stderr] 112 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => x.partial_cmp(y), [INFO] [stderr] 113 | | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => x.partial_cmp(y), [INFO] [stderr] 114 | | _ => None, [INFO] [stderr] 115 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 111 | match (self, other) { [INFO] [stderr] 112 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => x.partial_cmp(y), [INFO] [stderr] 113 | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => x.partial_cmp(y), [INFO] [stderr] 114 | _ => None, [INFO] [stderr] 115 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | / return match self.partial_cmp(other) { [INFO] [stderr] 122 | | Some(Ordering::Equal) => true, [INFO] [stderr] 123 | | _ => false, [INFO] [stderr] 124 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 121 | match self.partial_cmp(other) { [INFO] [stderr] 122 | Some(Ordering::Equal) => true, [INFO] [stderr] 123 | _ => false, [INFO] [stderr] 124 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/mod.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | return Err(Errors::MergeError); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Errors::MergeError)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused variable: `vo` [INFO] [stderr] --> src/metrics/mod.rs:36:56 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn join(&self, rhs: &Self, terms: Vec, vo: ops::Ops) -> Option { [INFO] [stderr] | ^^ help: consider using `_vo` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/metadata/mod.rs:104:25 [INFO] [stderr] | [INFO] [stderr] 104 | for (key, _) in &md.labels { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 104 | for key in md.labels.keys() { [INFO] [stderr] | ^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/apm/types.rs:80:32 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn log(&mut self, log: &Message) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/apm/types.rs:86:31 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn child(&self, name: &Message) -> Self { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 86 | pub fn child(&self, name: &str) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 87 | let mut child = Self::new(name.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/apm/types.rs:94:39 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn child_from_parent_id(name: &Message, parent_id: SpanID) -> Self { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 94 | pub fn child_from_parent_id(name: &str, parent_id: SpanID) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 95 | let mut child = Self::new(name.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/apm/types.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / return match self { [INFO] [stderr] 26 | | MetricTypes::Gauge(x) => MetricTypes::Gauge(x.sqrt()), [INFO] [stderr] 27 | | MetricTypes::Summary(x) => { [INFO] [stderr] 28 | | MetricTypes::Summary(x.iter().map(|(k, v)| (k.clone(), v.sqrt())).collect()) [INFO] [stderr] 29 | | } [INFO] [stderr] 30 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 31 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 25 | match self { [INFO] [stderr] 26 | MetricTypes::Gauge(x) => MetricTypes::Gauge(x.sqrt()), [INFO] [stderr] 27 | MetricTypes::Summary(x) => { [INFO] [stderr] 28 | MetricTypes::Summary(x.iter().map(|(k, v)| (k.clone(), v.sqrt())).collect()) [INFO] [stderr] 29 | } [INFO] [stderr] 30 | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / return match (self, rhs) { [INFO] [stderr] 39 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x + y), [INFO] [stderr] 40 | | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 41 | | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] ... | [INFO] [stderr] 57 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 58 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 38 | match (self, rhs) { [INFO] [stderr] 39 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x + y), [INFO] [stderr] 40 | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 41 | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] 42 | // if they don't then pretend the RHS is 0. [INFO] [stderr] 43 | let mut summary = x.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | / return match (self, rhs) { [INFO] [stderr] 66 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x - y), [INFO] [stderr] 67 | | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 68 | | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] ... | [INFO] [stderr] 84 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 85 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 65 | match (self, rhs) { [INFO] [stderr] 66 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x - y), [INFO] [stderr] 67 | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => { [INFO] [stderr] 68 | // Iterate over all elements in the summary and add them together if they share keys. [INFO] [stderr] 69 | // if they don't then pretend the RHS is 0. [INFO] [stderr] 70 | let mut summary = x.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / return match (self, rhs) { [INFO] [stderr] 93 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x * y), [INFO] [stderr] 94 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 95 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 92 | match (self, rhs) { [INFO] [stderr] 93 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x * y), [INFO] [stderr] 94 | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 95 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | / return match (self, rhs) { [INFO] [stderr] 103 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x / y), [INFO] [stderr] 104 | | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 105 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 102 | match (self, rhs) { [INFO] [stderr] 103 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => MetricTypes::Gauge(x / y), [INFO] [stderr] 104 | _ => MetricTypes::Error(Errors::InvalidOperation), [INFO] [stderr] 105 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / return match (self, other) { [INFO] [stderr] 112 | | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => x.partial_cmp(y), [INFO] [stderr] 113 | | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => x.partial_cmp(y), [INFO] [stderr] 114 | | _ => None, [INFO] [stderr] 115 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 111 | match (self, other) { [INFO] [stderr] 112 | (MetricTypes::Gauge(x), MetricTypes::Gauge(y)) => x.partial_cmp(y), [INFO] [stderr] 113 | (MetricTypes::Summary(x), MetricTypes::Summary(y)) => x.partial_cmp(y), [INFO] [stderr] 114 | _ => None, [INFO] [stderr] 115 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/types.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | / return match self.partial_cmp(other) { [INFO] [stderr] 122 | | Some(Ordering::Equal) => true, [INFO] [stderr] 123 | | _ => false, [INFO] [stderr] 124 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 121 | match self.partial_cmp(other) { [INFO] [stderr] 122 | Some(Ordering::Equal) => true, [INFO] [stderr] 123 | _ => false, [INFO] [stderr] 124 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/metrics/types.rs:280:40 [INFO] [stderr] | [INFO] [stderr] 280 | e.insert("20".to_string(), 012 as Gauge); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 280 | e.insert("20".to_string(), 12 as Gauge); [INFO] [stderr] | ^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 280 | e.insert("20".to_string(), 0o12 as Gauge); [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/metrics/mod.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | return Err(Errors::MergeError); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Errors::MergeError)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused variable: `vo` [INFO] [stderr] --> src/metrics/mod.rs:36:56 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn join(&self, rhs: &Self, terms: Vec, vo: ops::Ops) -> Option { [INFO] [stderr] | ^^ help: consider using `_vo` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_metadata_builder` [INFO] [stderr] --> src/metadata/mod.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | fn test_metadata_builder() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_metadata_filter` [INFO] [stderr] --> src/metadata/mod.rs:236:5 [INFO] [stderr] | [INFO] [stderr] 236 | fn test_metadata_filter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/metadata/mod.rs:104:25 [INFO] [stderr] | [INFO] [stderr] 104 | for (key, _) in &md.labels { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 104 | for key in md.labels.keys() { [INFO] [stderr] | ^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/metadata/mod.rs:228:13 [INFO] [stderr] | [INFO] [stderr] 228 | md.get_labels().get("example").unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&md.get_labels()["example"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:139:38 [INFO] [stderr] | [INFO] [stderr] 139 | match MetricTypes::Gauge(100 as Gauge) + MetricTypes::Gauge(100 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:139:73 [INFO] [stderr] | [INFO] [stderr] 139 | match MetricTypes::Gauge(100 as Gauge) + MetricTypes::Gauge(100 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/metrics/types.rs:140:50 [INFO] [stderr] | [INFO] [stderr] 140 | MetricTypes::Gauge(x) => assert!(x == 200 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x - 200 as Gauge).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/metrics/types.rs:140:50 [INFO] [stderr] | [INFO] [stderr] 140 | MetricTypes::Gauge(x) => assert!(x == 200 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:140:55 [INFO] [stderr] | [INFO] [stderr] 140 | MetricTypes::Gauge(x) => assert!(x == 200 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(200)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:149:41 [INFO] [stderr] | [INFO] [stderr] 149 | t1.insert("10".to_string(), 25 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(25)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:150:41 [INFO] [stderr] | [INFO] [stderr] 150 | t1.insert("20".to_string(), 121 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(121)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:151:41 [INFO] [stderr] | [INFO] [stderr] 151 | t1.insert("30".to_string(), 100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:152:41 [INFO] [stderr] | [INFO] [stderr] 152 | t1.insert("35".to_string(), 100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:155:41 [INFO] [stderr] | [INFO] [stderr] 155 | t2.insert("10".to_string(), 25 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(25)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:156:41 [INFO] [stderr] | [INFO] [stderr] 156 | t2.insert("20".to_string(), 121 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(121)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:157:41 [INFO] [stderr] | [INFO] [stderr] 157 | t2.insert("30".to_string(), 200 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(200)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:158:41 [INFO] [stderr] | [INFO] [stderr] 158 | t2.insert("40".to_string(), -400 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(-400)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:161:40 [INFO] [stderr] | [INFO] [stderr] 161 | e.insert("10".to_string(), 50 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(50)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:162:40 [INFO] [stderr] | [INFO] [stderr] 162 | e.insert("20".to_string(), 242 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(242)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:163:40 [INFO] [stderr] | [INFO] [stderr] 163 | e.insert("30".to_string(), 300 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(300)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:164:40 [INFO] [stderr] | [INFO] [stderr] 164 | e.insert("35".to_string(), 100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:165:40 [INFO] [stderr] | [INFO] [stderr] 165 | e.insert("40".to_string(), -400 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(-400)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:177:40 [INFO] [stderr] | [INFO] [stderr] 177 | t.insert("10".to_string(), 50 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(50)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:178:40 [INFO] [stderr] | [INFO] [stderr] 178 | t.insert("20".to_string(), 242 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(242)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:179:40 [INFO] [stderr] | [INFO] [stderr] 179 | t.insert("30".to_string(), 200 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(200)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:182:40 [INFO] [stderr] | [INFO] [stderr] 182 | e.insert("10".to_string(), 100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:183:40 [INFO] [stderr] | [INFO] [stderr] 183 | e.insert("20".to_string(), 292 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(292)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:184:40 [INFO] [stderr] | [INFO] [stderr] 184 | e.insert("30".to_string(), 250 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(250)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:186:64 [INFO] [stderr] | [INFO] [stderr] 186 | match MetricTypes::Summary(t) + MetricTypes::Gauge(50 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(50)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:198:38 [INFO] [stderr] | [INFO] [stderr] 198 | match MetricTypes::Gauge(100 as Gauge) - MetricTypes::Gauge(100 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:198:73 [INFO] [stderr] | [INFO] [stderr] 198 | match MetricTypes::Gauge(100 as Gauge) - MetricTypes::Gauge(100 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/metrics/types.rs:199:50 [INFO] [stderr] | [INFO] [stderr] 199 | MetricTypes::Gauge(x) => assert!(x == 0 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x - 0 as Gauge).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/metrics/types.rs:199:50 [INFO] [stderr] | [INFO] [stderr] 199 | MetricTypes::Gauge(x) => assert!(x == 0 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:199:55 [INFO] [stderr] | [INFO] [stderr] 199 | MetricTypes::Gauge(x) => assert!(x == 0 as Gauge), [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:208:41 [INFO] [stderr] | [INFO] [stderr] 208 | t1.insert("10".to_string(), 25 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(25)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:209:41 [INFO] [stderr] | [INFO] [stderr] 209 | t1.insert("20".to_string(), 121 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(121)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:210:41 [INFO] [stderr] | [INFO] [stderr] 210 | t1.insert("30".to_string(), 100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:211:41 [INFO] [stderr] | [INFO] [stderr] 211 | t1.insert("35".to_string(), 100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:214:41 [INFO] [stderr] | [INFO] [stderr] 214 | t2.insert("10".to_string(), 25 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(25)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:215:41 [INFO] [stderr] | [INFO] [stderr] 215 | t2.insert("20".to_string(), 121 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(121)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:216:41 [INFO] [stderr] | [INFO] [stderr] 216 | t2.insert("30".to_string(), 200 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(200)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:217:41 [INFO] [stderr] | [INFO] [stderr] 217 | t2.insert("40".to_string(), 200 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(200)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:220:40 [INFO] [stderr] | [INFO] [stderr] 220 | e.insert("10".to_string(), 0 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:221:40 [INFO] [stderr] | [INFO] [stderr] 221 | e.insert("20".to_string(), 0 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:222:40 [INFO] [stderr] | [INFO] [stderr] 222 | e.insert("30".to_string(), -100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(-100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:223:40 [INFO] [stderr] | [INFO] [stderr] 223 | e.insert("35".to_string(), 100 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:224:40 [INFO] [stderr] | [INFO] [stderr] 224 | e.insert("40".to_string(), -200 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(-200)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:236:40 [INFO] [stderr] | [INFO] [stderr] 236 | t.insert("10".to_string(), 0 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:237:40 [INFO] [stderr] | [INFO] [stderr] 237 | t.insert("20".to_string(), 242 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(242)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:238:40 [INFO] [stderr] | [INFO] [stderr] 238 | t.insert("30".to_string(), 200 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(200)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:241:40 [INFO] [stderr] | [INFO] [stderr] 241 | e.insert("10".to_string(), -50 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(-50)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:242:40 [INFO] [stderr] | [INFO] [stderr] 242 | e.insert("20".to_string(), 192 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(192)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:243:40 [INFO] [stderr] | [INFO] [stderr] 243 | e.insert("30".to_string(), 150 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(150)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:245:64 [INFO] [stderr] | [INFO] [stderr] 245 | match MetricTypes::Summary(t) - MetricTypes::Gauge(50 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(50)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:257:38 [INFO] [stderr] | [INFO] [stderr] 257 | match MetricTypes::Gauge(10 as Gauge) - MetricTypes::Gauge(10 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:257:72 [INFO] [stderr] | [INFO] [stderr] 257 | match MetricTypes::Gauge(10 as Gauge) - MetricTypes::Gauge(10 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/metrics/types.rs:258:50 [INFO] [stderr] | [INFO] [stderr] 258 | MetricTypes::Gauge(x) => assert!(x == 100 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x - 100 as Gauge).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/metrics/types.rs:258:50 [INFO] [stderr] | [INFO] [stderr] 258 | MetricTypes::Gauge(x) => assert!(x == 100 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:258:55 [INFO] [stderr] | [INFO] [stderr] 258 | MetricTypes::Gauge(x) => assert!(x == 100 as Gauge), [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:267:41 [INFO] [stderr] | [INFO] [stderr] 267 | t1.insert("10".to_string(), 1 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:268:41 [INFO] [stderr] | [INFO] [stderr] 268 | t1.insert("20".to_string(), 2 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:269:41 [INFO] [stderr] | [INFO] [stderr] 269 | t1.insert("30".to_string(), 3 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(3)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:270:41 [INFO] [stderr] | [INFO] [stderr] 270 | t1.insert("35".to_string(), 4 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:273:41 [INFO] [stderr] | [INFO] [stderr] 273 | t2.insert("10".to_string(), 5 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(5)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:274:41 [INFO] [stderr] | [INFO] [stderr] 274 | t2.insert("20".to_string(), 6 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(6)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:275:41 [INFO] [stderr] | [INFO] [stderr] 275 | t2.insert("30".to_string(), 7 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(7)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:276:41 [INFO] [stderr] | [INFO] [stderr] 276 | t2.insert("40".to_string(), 8 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:279:40 [INFO] [stderr] | [INFO] [stderr] 279 | e.insert("10".to_string(), 5 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(5)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:280:40 [INFO] [stderr] | [INFO] [stderr] 280 | e.insert("20".to_string(), 012 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(012)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:281:40 [INFO] [stderr] | [INFO] [stderr] 281 | e.insert("30".to_string(), 21 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(21)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:282:40 [INFO] [stderr] | [INFO] [stderr] 282 | e.insert("35".to_string(), 4 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:283:40 [INFO] [stderr] | [INFO] [stderr] 283 | e.insert("40".to_string(), 8 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:295:40 [INFO] [stderr] | [INFO] [stderr] 295 | t.insert("10".to_string(), 1 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:296:40 [INFO] [stderr] | [INFO] [stderr] 296 | t.insert("20".to_string(), -5 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(-5)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:297:40 [INFO] [stderr] | [INFO] [stderr] 297 | t.insert("30".to_string(), 0 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:300:40 [INFO] [stderr] | [INFO] [stderr] 300 | e.insert("10".to_string(), 2 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:301:40 [INFO] [stderr] | [INFO] [stderr] 301 | e.insert("20".to_string(), -10 as Gauge); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(-10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:302:40 [INFO] [stderr] | [INFO] [stderr] 302 | e.insert("30".to_string(), 0 as Gauge); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/metrics/types.rs:304:64 [INFO] [stderr] | [INFO] [stderr] 304 | match MetricTypes::Summary(t) - MetricTypes::Gauge(2 as Gauge) { [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/apm/types.rs:80:32 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn log(&mut self, log: &Message) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/apm/types.rs:86:31 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn child(&self, name: &Message) -> Self { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 86 | pub fn child(&self, name: &str) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 87 | let mut child = Self::new(name.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/apm/types.rs:94:39 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn child_from_parent_id(name: &Message, parent_id: SpanID) -> Self { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 94 | pub fn child_from_parent_id(name: &str, parent_id: SpanID) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 95 | let mut child = Self::new(name.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tusk_data`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused variable: `b` [INFO] [stderr] --> benches/metrics.rs:11:50 [INFO] [stderr] | [INFO] [stderr] 11 | c.bench_function("matching metadata", move |b| { [INFO] [stderr] | ^ help: consider using `_b` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "429cf81239aa14e48876919e5055c39f5b658981185dab9626f58ffa5e022952"` [INFO] running `"docker" "rm" "-f" "429cf81239aa14e48876919e5055c39f5b658981185dab9626f58ffa5e022952"` [INFO] [stdout] 429cf81239aa14e48876919e5055c39f5b658981185dab9626f58ffa5e022952