[INFO] fetching crate diet-xml 0.2.2... [INFO] linting diet-xml-0.2.2 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate diet-xml 0.2.2 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate diet-xml 0.2.2 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate diet-xml 0.2.2 [INFO] tweaked toml for crates.io crate diet-xml 0.2.2 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate diet-xml 0.2.2 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate diet-xml 0.2.2 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a82d7620fa2d392b4846a4ef2fbb38ef56cbeebf98316e3f1c5dc86b51ecc50b [INFO] running `Command { std: "docker" "start" "-a" "a82d7620fa2d392b4846a4ef2fbb38ef56cbeebf98316e3f1c5dc86b51ecc50b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a82d7620fa2d392b4846a4ef2fbb38ef56cbeebf98316e3f1c5dc86b51ecc50b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a82d7620fa2d392b4846a4ef2fbb38ef56cbeebf98316e3f1c5dc86b51ecc50b", kill_on_drop: false }` [INFO] [stdout] a82d7620fa2d392b4846a4ef2fbb38ef56cbeebf98316e3f1c5dc86b51ecc50b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ba114a52d923c87a330d6413651f06c5a5b87322081563a094eea931d297fddd [INFO] running `Command { std: "docker" "start" "-a" "ba114a52d923c87a330d6413651f06c5a5b87322081563a094eea931d297fddd", kill_on_drop: false }` [INFO] [stderr] Checking diet-xml v0.2.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses [INFO] [stdout] --> src/schema.rs:108:71 [INFO] [stdout] | [INFO] [stdout] 108 | ...me((format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...them: `format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stdout] = note: `#[warn(clippy::double_parens)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around function argument [INFO] [stdout] --> src/schema.rs:108:71 [INFO] [stdout] | [INFO] [stdout] 108 | ...me((format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)))) } [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 108 - true => { return Err(XmlSchemaError::DuplicateElementName((format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)))) } [INFO] [stdout] 108 + true => { return Err(XmlSchemaError::DuplicateElementName(format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer) )) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses [INFO] [stdout] --> src/schema.rs:108:71 [INFO] [stdout] | [INFO] [stdout] 108 | ...me((format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...them: `format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stdout] = note: `#[warn(clippy::double_parens)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around function argument [INFO] [stdout] --> src/schema.rs:108:71 [INFO] [stdout] | [INFO] [stdout] 108 | ...me((format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)))) } [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 108 - true => { return Err(XmlSchemaError::DuplicateElementName((format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer)))) } [INFO] [stdout] 108 + true => { return Err(XmlSchemaError::DuplicateElementName(format!("Duplicate element: {} - to use duplicate element names\n apply !uniquesuffix to element in schemea eg \n the suffix will not appear in final output\n but suffix should be used in all method calls eg add_element(\"element!2\",\"value\"))", self.buffer) )) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function cannot return without recursing [INFO] [stdout] --> src/lib.rs:164:5 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn attributes(&mut self, attributes: &[(&str, &str)]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing [INFO] [stdout] 165 | [INFO] [stdout] 166 | self.attributes(attributes); [INFO] [stdout] | --------------------------- recursive call site [INFO] [stdout] | [INFO] [stdout] = help: a `loop` may express intention better if this is on purpose [INFO] [stdout] = note: `#[warn(unconditional_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `attributes` is never used [INFO] [stdout] --> src/builder.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 41 | impl<'a> ChainFromAdd<'a> { [INFO] [stdout] | ------------------------- method in this implementation [INFO] [stdout] 42 | pub(crate) fn attributes(self, attributes: &[(&str, &str)]) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/builder.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 108 | if self.ind_original_header == true [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.ind_original_header` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function cannot return without recursing [INFO] [stdout] --> src/lib.rs:164:5 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn attributes(&mut self, attributes: &[(&str, &str)]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing [INFO] [stdout] 165 | [INFO] [stdout] 166 | self.attributes(attributes); [INFO] [stdout] | --------------------------- recursive call site [INFO] [stdout] | [INFO] [stdout] = help: a `loop` may express intention better if this is on purpose [INFO] [stdout] = note: `#[warn(unconditional_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `attributes` is never used [INFO] [stdout] --> src/builder.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 41 | impl<'a> ChainFromAdd<'a> { [INFO] [stdout] | ------------------------- method in this implementation [INFO] [stdout] 42 | pub(crate) fn attributes(self, attributes: &[(&str, &str)]) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/builder.rs:183:30 [INFO] [stdout] | [INFO] [stdout] 183 | (create_position(&position, &self.current_key), *position.last().unwrap()) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/builder.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | write!(self.xml_output, "{}\n", i).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 195 - write!(self.xml_output, "{}\n", i).unwrap(); [INFO] [stdout] 195 + writeln!(self.xml_output, "{}", i).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/builder.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 108 | if self.ind_original_header == true [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.ind_original_header` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/builder.rs:229:18 [INFO] [stdout] | [INFO] [stdout] 229 | if l != c && l.0 != None { [INFO] [stdout] | ^^^^^^^^^^^ help: use `Option::is_some()` instead: `l.0.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/builder.rs:241:10 [INFO] [stdout] | [INFO] [stdout] 241 | write!(self.xml_output, "{}\n", indent, elem_name).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 241 - write!(self.xml_output, "{}\n", indent, elem_name).unwrap(); [INFO] [stdout] 241 + writeln!(self.xml_output, "{}", indent, elem_name).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/builder.rs:246:22 [INFO] [stdout] | [INFO] [stdout] 246 | if l != c && c.0 != None { opening_tags.push((*c.0.unwrap(),*c.1.unwrap(),i)) ; } [INFO] [stdout] | ^^^^^^^^^^^ help: use `Option::is_some()` instead: `c.0.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/builder.rs:183:30 [INFO] [stdout] | [INFO] [stdout] 183 | (create_position(&position, &self.current_key), *position.last().unwrap()) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/builder.rs:324:49 [INFO] [stdout] | [INFO] [stdout] 324 | fn create_position(position: &Vec, key: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 324 - fn create_position(position: &Vec, key: &Vec) -> Vec { [INFO] [stdout] 324 + fn create_position(position: &Vec, key: &[usize]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/builder.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | write!(self.xml_output, "{}\n", i).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 195 - write!(self.xml_output, "{}\n", i).unwrap(); [INFO] [stdout] 195 + writeln!(self.xml_output, "{}", i).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/builder.rs:229:18 [INFO] [stdout] | [INFO] [stdout] 229 | if l != c && l.0 != None { [INFO] [stdout] | ^^^^^^^^^^^ help: use `Option::is_some()` instead: `l.0.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/builder.rs:241:10 [INFO] [stdout] | [INFO] [stdout] 241 | write!(self.xml_output, "{}\n", indent, elem_name).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 241 - write!(self.xml_output, "{}\n", indent, elem_name).unwrap(); [INFO] [stdout] 241 + writeln!(self.xml_output, "{}", indent, elem_name).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/builder.rs:246:22 [INFO] [stdout] | [INFO] [stdout] 246 | if l != c && c.0 != None { opening_tags.push((*c.0.unwrap(),*c.1.unwrap(),i)) ; } [INFO] [stdout] | ^^^^^^^^^^^ help: use `Option::is_some()` instead: `c.0.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/schema.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | if !c.is_alphanumeric() && !(c == '!') && !(c == '-' && i > 0) && !(c == '_' && i > 0)&& !(c == '.' && i > 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(c.is_alphanumeric() || (c == '!') || c == '-' && i > 0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/schema.rs:55:36 [INFO] [stdout] | [INFO] [stdout] 55 | if !c.is_alphanumeric() && !(c == '!') && !(c == '-' && i > 0) && !(c == '_' && i > 0)&& !(c == '.' && i > 0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `(c != '!')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/schema.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | return Ok(ind_opening); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 64 - return Ok(ind_opening); [INFO] [stdout] 64 + Ok(ind_opening) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/builder.rs:324:49 [INFO] [stdout] | [INFO] [stdout] 324 | fn create_position(position: &Vec, key: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 324 - fn create_position(position: &Vec, key: &Vec) -> Vec { [INFO] [stdout] 324 + fn create_position(position: &Vec, key: &[usize]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/schema.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 149 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 149 - return Ok(()); [INFO] [stdout] 149 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/schema.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | if !c.is_alphanumeric() && !(c == '!') && !(c == '-' && i > 0) && !(c == '_' && i > 0)&& !(c == '.' && i > 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(c.is_alphanumeric() || (c == '!') || c == '-' && i > 0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/schema.rs:55:36 [INFO] [stdout] | [INFO] [stdout] 55 | if !c.is_alphanumeric() && !(c == '!') && !(c == '-' && i > 0) && !(c == '_' && i > 0)&& !(c == '.' && i > 0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `(c != '!')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/schema.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | return Ok(ind_opening); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 64 - return Ok(ind_opening); [INFO] [stdout] 64 + Ok(ind_opening) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/schema.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 149 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 149 - return Ok(()); [INFO] [stdout] 149 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `XmlBuilder` [INFO] [stdout] --> src/lib.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | / pub fn new() -> Self { [INFO] [stdout] 132 | | XmlBuilder { [INFO] [stdout] 133 | | builder: builder::Builder::new(), [INFO] [stdout] 134 | | } [INFO] [stdout] 135 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 121 + impl Default for XmlBuilder { [INFO] [stdout] 122 + fn default() -> Self { [INFO] [stdout] 123 + Self::new() [INFO] [stdout] 124 + } [INFO] [stdout] 125 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `println!` args [INFO] [stdout] --> src/schema.rs:240:25 [INFO] [stdout] | [INFO] [stdout] 240 | {println!("{}",r.to_string()) }; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `XmlBuilder` [INFO] [stdout] --> src/lib.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | / pub fn new() -> Self { [INFO] [stdout] 132 | | XmlBuilder { [INFO] [stdout] 133 | | builder: builder::Builder::new(), [INFO] [stdout] 134 | | } [INFO] [stdout] 135 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 121 + impl Default for XmlBuilder { [INFO] [stdout] 122 + fn default() -> Self { [INFO] [stdout] 123 + Self::new() [INFO] [stdout] 124 + } [INFO] [stdout] 125 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/lib.rs:164:34 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn attributes(&mut self, attributes: &[(&str, &str)]) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attributes` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/lib.rs:166:25 [INFO] [stdout] | [INFO] [stdout] 166 | self.attributes(attributes); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lib.rs:141:33 [INFO] [stdout] | [INFO] [stdout] 141 | pub fn set_key(&mut self, nm_element: &str, txt_key: K) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 141 | pub fn set_key(&mut self, nm_element: &str, txt_key: K) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lib.rs:150:37 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn add_element(&mut self, nm_element: &str, value_element: V) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 150 | pub fn add_element(&mut self, nm_element: &str, value_element: V) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/lib.rs:164:34 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn attributes(&mut self, attributes: &[(&str, &str)]) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attributes` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/lib.rs:166:25 [INFO] [stdout] | [INFO] [stdout] 166 | self.attributes(attributes); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lib.rs:141:33 [INFO] [stdout] | [INFO] [stdout] 141 | pub fn set_key(&mut self, nm_element: &str, txt_key: K) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 141 | pub fn set_key(&mut self, nm_element: &str, txt_key: K) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lib.rs:150:37 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn add_element(&mut self, nm_element: &str, value_element: V) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 150 | pub fn add_element(&mut self, nm_element: &str, value_element: V) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/builder.rs:149:27 [INFO] [stdout] | [INFO] [stdout] 149 | pub(crate) fn set_key(&mut self, nm_element: &str, txt_key: &str) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 149 | pub(crate) fn set_key(&mut self, nm_element: &str, txt_key: &str) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/builder.rs:173:31 [INFO] [stdout] | [INFO] [stdout] 173 | pub(crate) fn add_element(&mut self, nm_element: &str, value_element: &str) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 173 | pub(crate) fn add_element(&mut self, nm_element: &str, value_element: &str) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/builder.rs:149:27 [INFO] [stdout] | [INFO] [stdout] 149 | pub(crate) fn set_key(&mut self, nm_element: &str, txt_key: &str) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 149 | pub(crate) fn set_key(&mut self, nm_element: &str, txt_key: &str) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/builder.rs:173:31 [INFO] [stdout] | [INFO] [stdout] 173 | pub(crate) fn add_element(&mut self, nm_element: &str, value_element: &str) -> ChainFromAdd { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 173 | pub(crate) fn add_element(&mut self, nm_element: &str, value_element: &str) -> ChainFromAdd<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.36s [INFO] running `Command { std: "docker" "inspect" "ba114a52d923c87a330d6413651f06c5a5b87322081563a094eea931d297fddd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ba114a52d923c87a330d6413651f06c5a5b87322081563a094eea931d297fddd", kill_on_drop: false }` [INFO] [stdout] ba114a52d923c87a330d6413651f06c5a5b87322081563a094eea931d297fddd