[INFO] crate sesstype 0.2.4 is already in cache [INFO] extracting crate sesstype 0.2.4 into work/ex/clippy-test-run/sources/stable/reg/sesstype/0.2.4 [INFO] extracting crate sesstype 0.2.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/sesstype/0.2.4 [INFO] validating manifest of sesstype-0.2.4 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 sesstype-0.2.4 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 sesstype-0.2.4 [INFO] finished frobbing sesstype-0.2.4 [INFO] frobbed toml for sesstype-0.2.4 written to work/ex/clippy-test-run/sources/stable/reg/sesstype/0.2.4/Cargo.toml [INFO] started frobbing sesstype-0.2.4 [INFO] finished frobbing sesstype-0.2.4 [INFO] frobbed toml for sesstype-0.2.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/sesstype/0.2.4/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 sesstype-0.2.4 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/sesstype/0.2.4:/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] 7592897592f64629114b18721aefc36c82a41b3ca0c91f321daf90494e93f7d6 [INFO] running `"docker" "start" "-a" "7592897592f64629114b18721aefc36c82a41b3ca0c91f321daf90494e93f7d6"` [INFO] [stderr] Checking sesstype v0.2.4 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:38:29 [INFO] [stderr] | [INFO] [stderr] 38 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:51:29 [INFO] [stderr] | [INFO] [stderr] 51 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:84:45 [INFO] [stderr] | [INFO] [stderr] 84 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:80:53 [INFO] [stderr] | [INFO] [stderr] 80 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:136:41 [INFO] [stderr] | [INFO] [stderr] 136 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:399:21 [INFO] [stderr] | [INFO] [stderr] 399 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:595:21 [INFO] [stderr] | [INFO] [stderr] 595 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:599:21 [INFO] [stderr] | [INFO] [stderr] 599 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:38:29 [INFO] [stderr] | [INFO] [stderr] 38 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:51:29 [INFO] [stderr] | [INFO] [stderr] 51 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:84:45 [INFO] [stderr] | [INFO] [stderr] 84 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:80:53 [INFO] [stderr] | [INFO] [stderr] 80 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/projection.rs:136:41 [INFO] [stderr] | [INFO] [stderr] 136 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:399:21 [INFO] [stderr] | [INFO] [stderr] 399 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:595:21 [INFO] [stderr] | [INFO] [stderr] 595 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/lib.rs:599:21 [INFO] [stderr] | [INFO] [stderr] 599 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/parser.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / if self.roles.contains_key(&name) { [INFO] [stderr] 63 | | (*self.roles.get(&*name).unwrap()).clone() [INFO] [stderr] 64 | | } else { [INFO] [stderr] 65 | | let role = Role::new(&name); [INFO] [stderr] 66 | | self.roles.insert(name, role.clone()); [INFO] [stderr] 67 | | role [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________^ help: consider using: `self.roles.entry(name)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parser.rs:63:15 [INFO] [stderr] | [INFO] [stderr] 63 | (*self.roles.get(&*name).unwrap()).clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.roles[&*name]` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parser.rs:117:33 [INFO] [stderr] | [INFO] [stderr] 117 | fn is_valid(&self, typevar: &String) -> bool { [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: length comparison to zero [INFO] [stderr] --> src/parser.rs:132:16 [INFO] [stderr] | [INFO] [stderr] 132 | if unparsed.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!unparsed.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:156:16 [INFO] [stderr] | [INFO] [stderr] 156 | if unparsed.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!unparsed.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser.rs:195:23 [INFO] [stderr] | [INFO] [stderr] 195 | label: String::from(label), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `label` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/projection.rs:24:29 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn project(global_type: &Box, role: &Rc) -> Option> { [INFO] [stderr] | ^^^^^^^ help: try: `&G` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:35:21 [INFO] [stderr] | [INFO] [stderr] 35 | / match projected_s { [INFO] [stderr] 36 | | Some(projected_s) => { [INFO] [stderr] 37 | | sel = S::add_message(sel, m_i.clone(), projected_s); [INFO] [stderr] 38 | | () [INFO] [stderr] 39 | | } [INFO] [stderr] 40 | | None => (), [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 35 | if let Some(projected_s) = projected_s { [INFO] [stderr] 36 | sel = S::add_message(sel, m_i.clone(), projected_s); [INFO] [stderr] 37 | () [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | / match projected_s { [INFO] [stderr] 49 | | Some(projected_s) => { [INFO] [stderr] 50 | | br = S::add_message(br, m_i.clone(), projected_s); [INFO] [stderr] 51 | | () [INFO] [stderr] 52 | | } [INFO] [stderr] 53 | | None => (), [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 48 | if let Some(projected_s) = projected_s { [INFO] [stderr] 49 | br = S::add_message(br, m_i.clone(), projected_s); [INFO] [stderr] 50 | () [INFO] [stderr] 51 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:75:37 [INFO] [stderr] | [INFO] [stderr] 75 | / match projected_s { [INFO] [stderr] 76 | | Some(ref projected_s) => { [INFO] [stderr] 77 | | match merged { [INFO] [stderr] 78 | | Some(merged_) => { [INFO] [stderr] ... | [INFO] [stderr] 86 | | None => (), [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 75 | if let Some(ref projected_s) = projected_s { [INFO] [stderr] 76 | match merged { [INFO] [stderr] 77 | Some(merged_) => { [INFO] [stderr] 78 | merged = merge(&merged_, projected_s); [INFO] [stderr] 79 | () [INFO] [stderr] 80 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:77:45 [INFO] [stderr] | [INFO] [stderr] 77 | / match merged { [INFO] [stderr] 78 | | Some(merged_) => { [INFO] [stderr] 79 | | merged = merge(&merged_, projected_s); [INFO] [stderr] 80 | | () [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | None => (), [INFO] [stderr] 83 | | } [INFO] [stderr] | |_____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 77 | if let Some(merged_) = merged { [INFO] [stderr] 78 | merged = merge(&merged_, projected_s); [INFO] [stderr] 79 | () [INFO] [stderr] 80 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/projection.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | fn merge(l: &Box, r: &Box) -> Option> { [INFO] [stderr] | ^^^^^^^ help: try: `&S` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/projection.rs:116:25 [INFO] [stderr] | [INFO] [stderr] 116 | fn merge(l: &Box, r: &Box) -> Option> { [INFO] [stderr] | ^^^^^^^ help: try: `&S` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:130:25 [INFO] [stderr] | [INFO] [stderr] 130 | / match s_j { [INFO] [stderr] 131 | | Some(s_j) => { [INFO] [stderr] 132 | | let merged_br = merge(s_i, s_j); [INFO] [stderr] 133 | | match merged_br { [INFO] [stderr] ... | [INFO] [stderr] 141 | | None => (), [INFO] [stderr] 142 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 130 | if let Some(s_j) = s_j { [INFO] [stderr] 131 | let merged_br = merge(s_i, s_j); [INFO] [stderr] 132 | match merged_br { [INFO] [stderr] 133 | Some(merged_br) => { [INFO] [stderr] 134 | br = S::add_message(br, m_i.clone(), merged_br); [INFO] [stderr] 135 | () [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:133:33 [INFO] [stderr] | [INFO] [stderr] 133 | / match merged_br { [INFO] [stderr] 134 | | Some(merged_br) => { [INFO] [stderr] 135 | | br = S::add_message(br, m_i.clone(), merged_br); [INFO] [stderr] 136 | | () [INFO] [stderr] 137 | | } [INFO] [stderr] 138 | | None => (), [INFO] [stderr] 139 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 133 | if let Some(merged_br) = merged_br { [INFO] [stderr] 134 | br = S::add_message(br, m_i.clone(), merged_br); [INFO] [stderr] 135 | () [INFO] [stderr] 136 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/lib.rs:229:58 [INFO] [stderr] | [INFO] [stderr] 229 | PayloadType::BaseType(ref t) => String::from(t.as_str().clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 229 | PayloadType::BaseType(ref t) => String::from(&(*t.as_str()).clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 229 | PayloadType::BaseType(ref t) => String::from(&str::clone(t.as_str())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:230:44 [INFO] [stderr] | [INFO] [stderr] 230 | PayloadType::Session(ref s) => String::from(s.to_string().clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.to_string().clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:396:13 [INFO] [stderr] | [INFO] [stderr] 396 | / match *m_interact_type { [INFO] [stderr] 397 | | Type::Interact { ref mut g, .. } => { [INFO] [stderr] 398 | | g.insert(m_i, g_i); [INFO] [stderr] 399 | | () [INFO] [stderr] 400 | | } [INFO] [stderr] 401 | | _ => (), [INFO] [stderr] 402 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 396 | if let Type::Interact { ref mut g, .. } = *m_interact_type { [INFO] [stderr] 397 | g.insert(m_i, g_i); [INFO] [stderr] 398 | () [INFO] [stderr] 399 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:475:44 [INFO] [stderr] | [INFO] [stderr] 475 | Type::TypeVar { ref t } => format!("{}", t), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `t.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: item `local::Type` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:556:5 [INFO] [stderr] | [INFO] [stderr] 556 | / impl Type { [INFO] [stderr] 557 | | /// Returns a heap-allocated `Type::Branch` with no interactions. [INFO] [stderr] 558 | | /// [INFO] [stderr] 559 | | /// `p` is the receiver `Role`. [INFO] [stderr] ... | [INFO] [stderr] 699 | | } [INFO] [stderr] 700 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/lib.rs:693:38 [INFO] [stderr] | [INFO] [stderr] 693 | => *t1 == *t2 && &*s1 == &*s2, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 693 | => *t1 == *t2 && *s1 == *s2, [INFO] [stderr] | ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:730:42 [INFO] [stderr] | [INFO] [stderr] 730 | let mut branch_str = format!("{}", p.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `to_string()` is enough: `p.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:762:42 [INFO] [stderr] | [INFO] [stderr] 762 | let mut select_str = format!("{}", p.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `to_string()` is enough: `p.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:794:44 [INFO] [stderr] | [INFO] [stderr] 794 | Type::TypeVar { ref t } => format!("{}", t), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `t.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/lib.rs:847:38 [INFO] [stderr] | [INFO] [stderr] 847 | => *t1 == *t2 && &*s1 == &*s2, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 847 | => *t1 == *t2 && *s1 == *s2, [INFO] [stderr] | ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `sesstype`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/parser.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / if self.roles.contains_key(&name) { [INFO] [stderr] 63 | | (*self.roles.get(&*name).unwrap()).clone() [INFO] [stderr] 64 | | } else { [INFO] [stderr] 65 | | let role = Role::new(&name); [INFO] [stderr] 66 | | self.roles.insert(name, role.clone()); [INFO] [stderr] 67 | | role [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________^ help: consider using: `self.roles.entry(name)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parser.rs:63:15 [INFO] [stderr] | [INFO] [stderr] 63 | (*self.roles.get(&*name).unwrap()).clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.roles[&*name]` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parser.rs:117:33 [INFO] [stderr] | [INFO] [stderr] 117 | fn is_valid(&self, typevar: &String) -> bool { [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: length comparison to zero [INFO] [stderr] --> src/parser.rs:132:16 [INFO] [stderr] | [INFO] [stderr] 132 | if unparsed.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!unparsed.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:156:16 [INFO] [stderr] | [INFO] [stderr] 156 | if unparsed.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!unparsed.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser.rs:195:23 [INFO] [stderr] | [INFO] [stderr] 195 | label: String::from(label), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `label` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:439:9 [INFO] [stderr] | [INFO] [stderr] 439 | / match g { [INFO] [stderr] 440 | | Some(_) => assert!(false), // Not expecting this to parse [INFO] [stderr] 441 | | None => (), [INFO] [stderr] 442 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(_) = g { assert!(false) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/projection.rs:24:29 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn project(global_type: &Box, role: &Rc) -> Option> { [INFO] [stderr] | ^^^^^^^ help: try: `&G` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:35:21 [INFO] [stderr] | [INFO] [stderr] 35 | / match projected_s { [INFO] [stderr] 36 | | Some(projected_s) => { [INFO] [stderr] 37 | | sel = S::add_message(sel, m_i.clone(), projected_s); [INFO] [stderr] 38 | | () [INFO] [stderr] 39 | | } [INFO] [stderr] 40 | | None => (), [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 35 | if let Some(projected_s) = projected_s { [INFO] [stderr] 36 | sel = S::add_message(sel, m_i.clone(), projected_s); [INFO] [stderr] 37 | () [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | / match projected_s { [INFO] [stderr] 49 | | Some(projected_s) => { [INFO] [stderr] 50 | | br = S::add_message(br, m_i.clone(), projected_s); [INFO] [stderr] 51 | | () [INFO] [stderr] 52 | | } [INFO] [stderr] 53 | | None => (), [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 48 | if let Some(projected_s) = projected_s { [INFO] [stderr] 49 | br = S::add_message(br, m_i.clone(), projected_s); [INFO] [stderr] 50 | () [INFO] [stderr] 51 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:75:37 [INFO] [stderr] | [INFO] [stderr] 75 | / match projected_s { [INFO] [stderr] 76 | | Some(ref projected_s) => { [INFO] [stderr] 77 | | match merged { [INFO] [stderr] 78 | | Some(merged_) => { [INFO] [stderr] ... | [INFO] [stderr] 86 | | None => (), [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 75 | if let Some(ref projected_s) = projected_s { [INFO] [stderr] 76 | match merged { [INFO] [stderr] 77 | Some(merged_) => { [INFO] [stderr] 78 | merged = merge(&merged_, projected_s); [INFO] [stderr] 79 | () [INFO] [stderr] 80 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:77:45 [INFO] [stderr] | [INFO] [stderr] 77 | / match merged { [INFO] [stderr] 78 | | Some(merged_) => { [INFO] [stderr] 79 | | merged = merge(&merged_, projected_s); [INFO] [stderr] 80 | | () [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | None => (), [INFO] [stderr] 83 | | } [INFO] [stderr] | |_____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 77 | if let Some(merged_) = merged { [INFO] [stderr] 78 | merged = merge(&merged_, projected_s); [INFO] [stderr] 79 | () [INFO] [stderr] 80 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/projection.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | fn merge(l: &Box, r: &Box) -> Option> { [INFO] [stderr] | ^^^^^^^ help: try: `&S` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/projection.rs:116:25 [INFO] [stderr] | [INFO] [stderr] 116 | fn merge(l: &Box, r: &Box) -> Option> { [INFO] [stderr] | ^^^^^^^ help: try: `&S` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:130:25 [INFO] [stderr] | [INFO] [stderr] 130 | / match s_j { [INFO] [stderr] 131 | | Some(s_j) => { [INFO] [stderr] 132 | | let merged_br = merge(s_i, s_j); [INFO] [stderr] 133 | | match merged_br { [INFO] [stderr] ... | [INFO] [stderr] 141 | | None => (), [INFO] [stderr] 142 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 130 | if let Some(s_j) = s_j { [INFO] [stderr] 131 | let merged_br = merge(s_i, s_j); [INFO] [stderr] 132 | match merged_br { [INFO] [stderr] 133 | Some(merged_br) => { [INFO] [stderr] 134 | br = S::add_message(br, m_i.clone(), merged_br); [INFO] [stderr] 135 | () [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:133:33 [INFO] [stderr] | [INFO] [stderr] 133 | / match merged_br { [INFO] [stderr] 134 | | Some(merged_br) => { [INFO] [stderr] 135 | | br = S::add_message(br, m_i.clone(), merged_br); [INFO] [stderr] 136 | | () [INFO] [stderr] 137 | | } [INFO] [stderr] 138 | | None => (), [INFO] [stderr] 139 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 133 | if let Some(merged_br) = merged_br { [INFO] [stderr] 134 | br = S::add_message(br, m_i.clone(), merged_br); [INFO] [stderr] 135 | () [INFO] [stderr] 136 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 35 [INFO] [stderr] --> src/projection.rs:209:5 [INFO] [stderr] | [INFO] [stderr] 209 | / fn test_projection() { [INFO] [stderr] 210 | | let sndr = Role::new("alice"); [INFO] [stderr] 211 | | let rcvr = Role::new("bob"); [INFO] [stderr] 212 | | let msg1 = Message::new("label1"); [INFO] [stderr] ... | [INFO] [stderr] 295 | | } [INFO] [stderr] 296 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/projection.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | / match local_r { [INFO] [stderr] 321 | | Some(_) => assert!(false), [INFO] [stderr] 322 | | None => (), [INFO] [stderr] 323 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(_) = local_r { assert!(false) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/lib.rs:229:58 [INFO] [stderr] | [INFO] [stderr] 229 | PayloadType::BaseType(ref t) => String::from(t.as_str().clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 229 | PayloadType::BaseType(ref t) => String::from(&(*t.as_str()).clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 229 | PayloadType::BaseType(ref t) => String::from(&str::clone(t.as_str())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:230:44 [INFO] [stderr] | [INFO] [stderr] 230 | PayloadType::Session(ref s) => String::from(s.to_string().clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.to_string().clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:396:13 [INFO] [stderr] | [INFO] [stderr] 396 | / match *m_interact_type { [INFO] [stderr] 397 | | Type::Interact { ref mut g, .. } => { [INFO] [stderr] 398 | | g.insert(m_i, g_i); [INFO] [stderr] 399 | | () [INFO] [stderr] 400 | | } [INFO] [stderr] 401 | | _ => (), [INFO] [stderr] 402 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 396 | if let Type::Interact { ref mut g, .. } = *m_interact_type { [INFO] [stderr] 397 | g.insert(m_i, g_i); [INFO] [stderr] 398 | () [INFO] [stderr] 399 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:475:44 [INFO] [stderr] | [INFO] [stderr] 475 | Type::TypeVar { ref t } => format!("{}", t), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `t.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: item `local::Type` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:556:5 [INFO] [stderr] | [INFO] [stderr] 556 | / impl Type { [INFO] [stderr] 557 | | /// Returns a heap-allocated `Type::Branch` with no interactions. [INFO] [stderr] 558 | | /// [INFO] [stderr] 559 | | /// `p` is the receiver `Role`. [INFO] [stderr] ... | [INFO] [stderr] 699 | | } [INFO] [stderr] 700 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/lib.rs:693:38 [INFO] [stderr] | [INFO] [stderr] 693 | => *t1 == *t2 && &*s1 == &*s2, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 693 | => *t1 == *t2 && *s1 == *s2, [INFO] [stderr] | ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:730:42 [INFO] [stderr] | [INFO] [stderr] 730 | let mut branch_str = format!("{}", p.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `to_string()` is enough: `p.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:762:42 [INFO] [stderr] | [INFO] [stderr] 762 | let mut select_str = format!("{}", p.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `to_string()` is enough: `p.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:794:44 [INFO] [stderr] | [INFO] [stderr] 794 | Type::TypeVar { ref t } => format!("{}", t), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `t.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/lib.rs:847:38 [INFO] [stderr] | [INFO] [stderr] 847 | => *t1 == *t2 && &*s1 == &*s2, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 847 | => *t1 == *t2 && *s1 == *s2, [INFO] [stderr] | ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:994:29 [INFO] [stderr] | [INFO] [stderr] 994 | assert!(*m_i.label() == String::from("label")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:999:45 [INFO] [stderr] | [INFO] [stderr] 999 | assert!(*t == String::from("T")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:1004:57 [INFO] [stderr] | [INFO] [stderr] 1004 | assert!(*m_i.label() == String::from("L")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:1006:93 [INFO] [stderr] | [INFO] [stderr] 1006 | PayloadType::BaseType(ref t) => assert!(*t == String::from("T")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `sesstype`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "7592897592f64629114b18721aefc36c82a41b3ca0c91f321daf90494e93f7d6"` [INFO] running `"docker" "rm" "-f" "7592897592f64629114b18721aefc36c82a41b3ca0c91f321daf90494e93f7d6"` [INFO] [stdout] 7592897592f64629114b18721aefc36c82a41b3ca0c91f321daf90494e93f7d6