[INFO] fetching crate parcel_selectors 0.28.2... [INFO] linting parcel_selectors-0.28.2 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate parcel_selectors 0.28.2 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate parcel_selectors 0.28.2 [INFO] finished tweaking crates.io crate parcel_selectors 0.28.2 [INFO] tweaked toml for crates.io crate parcel_selectors 0.28.2 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate parcel_selectors 0.28.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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 35 packages to latest compatible versions [INFO] [stderr] Adding cssparser v0.33.0 (available: v0.37.0) [INFO] [stderr] Adding phf v0.11.3 (available: v0.13.1) [INFO] [stderr] Adding phf_codegen v0.11.3 (available: v0.13.1) [INFO] [stderr] Adding schemars v0.8.22 (available: v1.2.1) [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] [stderr] Downloading crates ... [INFO] [stderr] Downloaded static-self-derive v0.1.1 [INFO] [stderr] Downloaded static-self v0.1.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] a7e421e67d59008c2a2ac9e46242c0397fe50e258ccf423b88989e8efdd566b9 [INFO] running `Command { std: "docker" "start" "-a" "a7e421e67d59008c2a2ac9e46242c0397fe50e258ccf423b88989e8efdd566b9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a7e421e67d59008c2a2ac9e46242c0397fe50e258ccf423b88989e8efdd566b9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a7e421e67d59008c2a2ac9e46242c0397fe50e258ccf423b88989e8efdd566b9", kill_on_drop: false }` [INFO] [stdout] a7e421e67d59008c2a2ac9e46242c0397fe50e258ccf423b88989e8efdd566b9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 4ede31d7ad21af3c2737852ac79f5e732fe6bbafa1d4f455b2b6a4368610b851 [INFO] running `Command { std: "docker" "start" "-a" "4ede31d7ad21af3c2737852ac79f5e732fe6bbafa1d4f455b2b6a4368610b851", kill_on_drop: false }` [INFO] [stderr] Compiling phf_shared v0.11.3 [INFO] [stderr] Compiling cssparser-macros v0.6.1 [INFO] [stderr] Compiling phf_generator v0.11.3 [INFO] [stderr] Compiling phf_codegen v0.11.3 [INFO] [stderr] Compiling phf_macros v0.11.3 [INFO] [stderr] Compiling parcel_selectors v0.28.2 (/opt/rustwide/workdir) [INFO] [stderr] Checking phf v0.11.3 [INFO] [stderr] Checking cssparser v0.33.0 [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> lib.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | #[cfg(all(feature = "serde"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "serde"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] = note: `#[warn(clippy::non_minimal_cfg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> lib.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | #[cfg(all(feature = "serde"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "serde"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] = note: `#[warn(clippy::non_minimal_cfg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> attr.rs:188:1 [INFO] [stdout] | [INFO] [stdout] 188 | / impl Default for ParsedCaseSensitivity { [INFO] [stdout] 189 | | fn default() -> Self { [INFO] [stdout] 190 | | ParsedCaseSensitivity::CaseSensitive [INFO] [stdout] 191 | | } [INFO] [stdout] 192 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 177 + #[derive(Default)] [INFO] [stdout] 178 | pub enum ParsedCaseSensitivity { [INFO] [stdout] 179 | // 's' was specified. [INFO] [stdout] ... [INFO] [stdout] 183 | // No flags were specified and HTML says this is a case-sensitive attribute. [INFO] [stdout] 184 ~ #[default] [INFO] [stdout] 185 ~ CaseSensitive, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> builder.rs:374:33 [INFO] [stdout] | [INFO] [stdout] 374 | simple_selector_specificity(&simple_selector, &mut specificity); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `simple_selector` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> context.rs:135:35 [INFO] [stdout] | [INFO] [stdout] 135 | pub pseudo_element_matching_fn: Option<&'a dyn Fn(&Impl::PseudoElement) -> bool>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> matching.rs:402:7 [INFO] [stdout] | [INFO] [stdout] 402 | / match element.parent_element() { [INFO] [stdout] 403 | | Some(e) => return Some(e), [INFO] [stdout] 404 | | None => {} [INFO] [stdout] 405 | | } [INFO] [stdout] | |_______^ help: try: `if let Some(e) = element.parent_element() { return Some(e) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:435:21 [INFO] [stdout] | [INFO] [stdout] 435 | debug_assert!(element.assigned_slot().map_or(true, |s| s.is_html_slot_element())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 435 - debug_assert!(element.assigned_slot().map_or(true, |s| s.is_html_slot_element())); [INFO] [stdout] 435 + debug_assert!(element.assigned_slot().is_none_or(|s| s.is_html_slot_element())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:464:6 [INFO] [stdout] | [INFO] [stdout] 464 | if combinator.map_or(false, |c| c.is_sibling()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 464 - if combinator.map_or(false, |c| c.is_sibling()) { [INFO] [stdout] 464 + if combinator.is_some_and(|c| c.is_sibling()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:490:91 [INFO] [stdout] | [INFO] [stdout] 490 | let mut next_element = next_element_for_combinator(element, combinator, &selector_iter, &context); [INFO] [stdout] | ^^^^^^^^ help: change this to: `context` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:545:86 [INFO] [stdout] | [INFO] [stdout] 545 | next_element = next_element_for_combinator(&element, combinator, &selector_iter, &context); [INFO] [stdout] | ^^^^^^^^ help: change this to: `context` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:576:71 [INFO] [stdout] | [INFO] [stdout] 576 | let matches_hover_and_active_quirk = matches_hover_and_active_quirk(&selector_iter, context, rightmost); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `selector_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> matching.rs:582:15 [INFO] [stdout] | [INFO] [stdout] 582 | if let Some(&Component::LocalName(ref local_name)) = selector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 582 - if let Some(&Component::LocalName(ref local_name)) = selector { [INFO] [stdout] 582 + if let Some(Component::LocalName(local_name)) = selector { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> matching.rs:589:15 [INFO] [stdout] | [INFO] [stdout] 589 | if let Some(&Component::ID(ref id)) = selector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 589 - if let Some(&Component::ID(ref id)) = selector { [INFO] [stdout] 589 + if let Some(Component::ID(id)) = selector { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> matching.rs:595:18 [INFO] [stdout] | [INFO] [stdout] 595 | while let Some(&Component::Class(ref class)) = selector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 595 - while let Some(&Component::Class(ref class)) = selector { [INFO] [stdout] 595 + while let Some(Component::Class(class)) = selector { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:679:29 [INFO] [stdout] | [INFO] [stdout] 679 | element.has_namespace(&url.borrow()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `url.borrow()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:683:29 [INFO] [stdout] | [INFO] [stdout] 683 | element.has_namespace(&ns.borrow()) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `ns.borrow()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:758:45 [INFO] [stdout] | [INFO] [stdout] 758 | element.match_non_ts_pseudo_class(pc, &mut context.shared, flags_setter) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `context.shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:766:7 [INFO] [stdout] | [INFO] [stdout] 766 | context.shared.shadow_host().map_or(false, |host| host == element.opaque()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 766 - context.shared.shadow_host().map_or(false, |host| host == element.opaque()) [INFO] [stdout] 766 + context.shared.shadow_host().is_some_and(|host| host == element.opaque()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:767:12 [INFO] [stdout] | [INFO] [stdout] 767 | && selector.as_ref().map_or(true, |selector| { [INFO] [stdout] | ____________^ [INFO] [stdout] 768 | | context [INFO] [stdout] 769 | | .shared [INFO] [stdout] 770 | | .nest(|context| matches_complex_selector(selector.iter(), element, context, flags_setter)) [INFO] [stdout] 771 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 767 - && selector.as_ref().map_or(true, |selector| { [INFO] [stdout] 767 + && selector.as_ref().is_none_or(|selector| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> parser.rs:85:60 [INFO] [stdout] | [INFO] [stdout] 85 | if let Some(first_uppercase) = s.bytes().position(|byte| byte >= b'A' && byte <= b'Z') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Selector` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> parser.rs:934:3 [INFO] [stdout] | [INFO] [stdout] 934 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> parser.rs:1113:10 [INFO] [stdout] | [INFO] [stdout] 1113 | if self [INFO] [stdout] | __________^ [INFO] [stdout] 1114 | | .0 [INFO] [stdout] 1115 | | .next_sequence() [INFO] [stdout] 1116 | | .map_or(true, |x| matches!(x, Combinator::Child | Combinator::Descendant)) [INFO] [stdout] | |__________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 1116 - .map_or(true, |x| matches!(x, Combinator::Child | Combinator::Descendant)) [INFO] [stdout] 1116 + .is_none_or(|x| matches!(x, Combinator::Child | Combinator::Descendant)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser.rs:1379:5 [INFO] [stdout] | [INFO] [stdout] 1379 | &*self.1 [INFO] [stdout] | ^^^^^^^^ help: try: `&self.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1619:9 [INFO] [stdout] | [INFO] [stdout] 1619 | / if !selector.visit(visitor) { [INFO] [stdout] 1620 | | return false; [INFO] [stdout] 1621 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1618 ~ Slotted(ref selector) [INFO] [stdout] 1619 ~ if !selector.visit(visitor) => { [INFO] [stdout] 1620 | return false; [INFO] [stdout] 1621 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1624:9 [INFO] [stdout] | [INFO] [stdout] 1624 | / if !selector.visit(visitor) { [INFO] [stdout] 1625 | | return false; [INFO] [stdout] 1626 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1623 ~ Host(Some(ref selector)) [INFO] [stdout] 1624 ~ if !selector.visit(visitor) => { [INFO] [stdout] 1625 | return false; [INFO] [stdout] 1626 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1632:9 [INFO] [stdout] | [INFO] [stdout] 1632 | / if !visitor.visit_attribute_selector( [INFO] [stdout] 1633 | | &NamespaceConstraint::Specific(&namespace_empty_string::()), [INFO] [stdout] 1634 | | local_name, [INFO] [stdout] 1635 | | local_name_lower, [INFO] [stdout] 1636 | | ) { [INFO] [stdout] 1637 | | return false; [INFO] [stdout] 1638 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1631 ~ } [INFO] [stdout] 1632 | if !visitor.visit_attribute_selector( [INFO] [stdout] ... [INFO] [stdout] 1635 | local_name_lower, [INFO] [stdout] 1636 ~ ) => { [INFO] [stdout] 1637 | return false; [INFO] [stdout] 1638 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1645:9 [INFO] [stdout] | [INFO] [stdout] 1645 | / if !visitor.visit_attribute_selector( [INFO] [stdout] 1646 | | &NamespaceConstraint::Specific(&namespace_empty_string::()), [INFO] [stdout] 1647 | | local_name, [INFO] [stdout] 1648 | | local_name, [INFO] [stdout] 1649 | | ) { [INFO] [stdout] 1650 | | return false; [INFO] [stdout] 1651 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1644 ~ } if !never_matches [INFO] [stdout] 1645 ~ && !visitor.visit_attribute_selector( [INFO] [stdout] 1646 | &NamespaceConstraint::Specific(&namespace_empty_string::()), [INFO] [stdout] 1647 | local_name, [INFO] [stdout] 1648 | local_name, [INFO] [stdout] 1649 ~ ) => { [INFO] [stdout] 1650 | return false; [INFO] [stdout] 1651 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1672:9 [INFO] [stdout] | [INFO] [stdout] 1672 | / if !pseudo_class.visit(visitor) { [INFO] [stdout] 1673 | | return false; [INFO] [stdout] 1674 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1671 ~ NonTSPseudoClass(ref pseudo_class) [INFO] [stdout] 1672 ~ if !pseudo_class.visit(visitor) => { [INFO] [stdout] 1673 | return false; [INFO] [stdout] 1674 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1678:9 [INFO] [stdout] | [INFO] [stdout] 1678 | / if !visitor.visit_selector_list(&list) { [INFO] [stdout] 1679 | | return false; [INFO] [stdout] 1680 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1677 ~ Negation(ref list) | Is(ref list) | Where(ref list) [INFO] [stdout] 1678 ~ if !visitor.visit_selector_list(&list) => { [INFO] [stdout] 1679 | return false; [INFO] [stdout] 1680 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1683:9 [INFO] [stdout] | [INFO] [stdout] 1683 | / if !visitor.visit_selector_list(nth_of_data.selectors()) { [INFO] [stdout] 1684 | | return false; [INFO] [stdout] 1685 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1682 ~ NthOf(ref nth_of_data) [INFO] [stdout] 1683 ~ if !visitor.visit_selector_list(nth_of_data.selectors()) => { [INFO] [stdout] 1684 | return false; [INFO] [stdout] 1685 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> parser.rs:1678:41 [INFO] [stdout] | [INFO] [stdout] 1678 | if !visitor.visit_selector_list(&list) { [INFO] [stdout] | ^^^^^ help: change this to: `list` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> parser.rs:2126:8 [INFO] [stdout] | [INFO] [stdout] 2126 | if !input.expect_delim('&').is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `input.expect_delim('&').is_err()` [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: all variants have the same postfix: `Namespace` [INFO] [stdout] --> parser.rs:2372:1 [INFO] [stdout] | [INFO] [stdout] 2372 | / enum QNamePrefix<'i, Impl: SelectorImpl<'i>> { [INFO] [stdout] 2373 | | ImplicitNoNamespace, // `foo` in attr selectors [INFO] [stdout] 2374 | | ImplicitAnyNamespace, // `foo` in type selectors, without a default ns [INFO] [stdout] 2375 | | ImplicitDefaultNamespace(Impl::NamespaceUrl), // `foo` in type selectors, with a default ns [INFO] [stdout] ... | [INFO] [stdout] 2378 | | ExplicitNamespace(Impl::NamespacePrefix, Impl::NamespaceUrl), // `prefix|foo` [INFO] [stdout] 2379 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> parser.rs:2388:5 [INFO] [stdout] | [INFO] [stdout] 2388 | /// but the token is still returned. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> parser.rs:2411:10 [INFO] [stdout] | [INFO] [stdout] 2411 | Ok(&Token::Ident(ref local_name)) => Ok(OptionalQName::Some(namespace, Some(local_name.clone()))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 2411 - Ok(&Token::Ident(ref local_name)) => Ok(OptionalQName::Some(namespace, Some(local_name.clone()))), [INFO] [stdout] 2411 + Ok(Token::Ident(local_name)) => Ok(OptionalQName::Some(namespace, Some(local_name.clone()))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> parser.rs:2423:9 [INFO] [stdout] | [INFO] [stdout] 2423 | match input.next_including_whitespace().map(|t| t.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `input.next_including_whitespace().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> parser.rs:2450:13 [INFO] [stdout] | [INFO] [stdout] 2450 | match input.next_including_whitespace().map(|t| t.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `input.next_including_whitespace().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> parser.rs:2574:3 [INFO] [stdout] | [INFO] [stdout] 2574 | let case_sensitivity; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] ... [INFO] [stdout] 2584 | case_sensitivity = attribute_flags.to_case_sensitivity(local_name_lower_cow.as_ref(), namespace.is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `case_sensitivity` here [INFO] [stdout] | [INFO] [stdout] 2574 ~ [INFO] [stdout] 2575 | // copied from to_ascii_lowercase function, so we can know whether it is already lower case. [INFO] [stdout] ... [INFO] [stdout] 2583 | }; [INFO] [stdout] 2584 ~ let case_sensitivity = attribute_flags.to_case_sensitivity(local_name_lower_cow.as_ref(), namespace.is_some()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> parser.rs:2577:71 [INFO] [stdout] | [INFO] [stdout] 2577 | if let Some(first_uppercase) = local_name.bytes().position(|byte| byte >= b'A' && byte <= b'Z') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> parser.rs:2621:26 [INFO] [stdout] | [INFO] [stdout] 2621 | fn to_case_sensitivity(self, local_name: &str, have_namespace: bool) -> ParsedCaseSensitivity { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> parser.rs:2970:21 [INFO] [stdout] | [INFO] [stdout] 2970 | let token = match input.next_including_whitespace().map(|t| t.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `input.next_including_whitespace().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser.rs:883:31 [INFO] [stdout] | [INFO] [stdout] 883 | pub fn iter_raw_match_order(&self) -> slice::Iter> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 883 | pub fn iter_raw_match_order(&self) -> slice::Iter<'_, Component<'i, Impl>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser.rs:888:35 [INFO] [stdout] | [INFO] [stdout] 888 | pub fn iter_mut_raw_match_order(&mut self) -> slice::IterMut> { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 888 | pub fn iter_mut_raw_match_order(&mut self) -> slice::IterMut<'_, Component<'i, Impl>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser.rs:906:36 [INFO] [stdout] | [INFO] [stdout] 906 | pub fn iter_raw_parse_order_from(&self, offset: usize) -> Rev>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 906 | pub fn iter_raw_parse_order_from(&self, offset: usize) -> Rev>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> attr.rs:188:1 [INFO] [stdout] | [INFO] [stdout] 188 | / impl Default for ParsedCaseSensitivity { [INFO] [stdout] 189 | | fn default() -> Self { [INFO] [stdout] 190 | | ParsedCaseSensitivity::CaseSensitive [INFO] [stdout] 191 | | } [INFO] [stdout] 192 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 177 + #[derive(Default)] [INFO] [stdout] 178 | pub enum ParsedCaseSensitivity { [INFO] [stdout] 179 | // 's' was specified. [INFO] [stdout] ... [INFO] [stdout] 183 | // No flags were specified and HTML says this is a case-sensitive attribute. [INFO] [stdout] 184 ~ #[default] [INFO] [stdout] 185 ~ CaseSensitive, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute from a type (`[u8; 0]`) to itself [INFO] [stdout] --> bloom.rs:303:5 [INFO] [stdout] | [INFO] [stdout] 303 | transmute::<[u8; ARRAY_SIZE % 8], [u8; 0]>([]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stdout] = note: `#[warn(clippy::useless_transmute)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> builder.rs:374:33 [INFO] [stdout] | [INFO] [stdout] 374 | simple_selector_specificity(&simple_selector, &mut specificity); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `simple_selector` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> context.rs:135:35 [INFO] [stdout] | [INFO] [stdout] 135 | pub pseudo_element_matching_fn: Option<&'a dyn Fn(&Impl::PseudoElement) -> bool>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> matching.rs:402:7 [INFO] [stdout] | [INFO] [stdout] 402 | / match element.parent_element() { [INFO] [stdout] 403 | | Some(e) => return Some(e), [INFO] [stdout] 404 | | None => {} [INFO] [stdout] 405 | | } [INFO] [stdout] | |_______^ help: try: `if let Some(e) = element.parent_element() { return Some(e) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:435:21 [INFO] [stdout] | [INFO] [stdout] 435 | debug_assert!(element.assigned_slot().map_or(true, |s| s.is_html_slot_element())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 435 - debug_assert!(element.assigned_slot().map_or(true, |s| s.is_html_slot_element())); [INFO] [stdout] 435 + debug_assert!(element.assigned_slot().is_none_or(|s| s.is_html_slot_element())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:464:6 [INFO] [stdout] | [INFO] [stdout] 464 | if combinator.map_or(false, |c| c.is_sibling()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 464 - if combinator.map_or(false, |c| c.is_sibling()) { [INFO] [stdout] 464 + if combinator.is_some_and(|c| c.is_sibling()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:490:91 [INFO] [stdout] | [INFO] [stdout] 490 | let mut next_element = next_element_for_combinator(element, combinator, &selector_iter, &context); [INFO] [stdout] | ^^^^^^^^ help: change this to: `context` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:545:86 [INFO] [stdout] | [INFO] [stdout] 545 | next_element = next_element_for_combinator(&element, combinator, &selector_iter, &context); [INFO] [stdout] | ^^^^^^^^ help: change this to: `context` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:576:71 [INFO] [stdout] | [INFO] [stdout] 576 | let matches_hover_and_active_quirk = matches_hover_and_active_quirk(&selector_iter, context, rightmost); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `selector_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> matching.rs:582:15 [INFO] [stdout] | [INFO] [stdout] 582 | if let Some(&Component::LocalName(ref local_name)) = selector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 582 - if let Some(&Component::LocalName(ref local_name)) = selector { [INFO] [stdout] 582 + if let Some(Component::LocalName(local_name)) = selector { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> matching.rs:589:15 [INFO] [stdout] | [INFO] [stdout] 589 | if let Some(&Component::ID(ref id)) = selector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 589 - if let Some(&Component::ID(ref id)) = selector { [INFO] [stdout] 589 + if let Some(Component::ID(id)) = selector { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> matching.rs:595:18 [INFO] [stdout] | [INFO] [stdout] 595 | while let Some(&Component::Class(ref class)) = selector { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 595 - while let Some(&Component::Class(ref class)) = selector { [INFO] [stdout] 595 + while let Some(Component::Class(class)) = selector { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:679:29 [INFO] [stdout] | [INFO] [stdout] 679 | element.has_namespace(&url.borrow()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `url.borrow()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:683:29 [INFO] [stdout] | [INFO] [stdout] 683 | element.has_namespace(&ns.borrow()) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `ns.borrow()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> matching.rs:758:45 [INFO] [stdout] | [INFO] [stdout] 758 | element.match_non_ts_pseudo_class(pc, &mut context.shared, flags_setter) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `context.shared` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:766:7 [INFO] [stdout] | [INFO] [stdout] 766 | context.shared.shadow_host().map_or(false, |host| host == element.opaque()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 766 - context.shared.shadow_host().map_or(false, |host| host == element.opaque()) [INFO] [stdout] 766 + context.shared.shadow_host().is_some_and(|host| host == element.opaque()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> matching.rs:767:12 [INFO] [stdout] | [INFO] [stdout] 767 | && selector.as_ref().map_or(true, |selector| { [INFO] [stdout] | ____________^ [INFO] [stdout] 768 | | context [INFO] [stdout] 769 | | .shared [INFO] [stdout] 770 | | .nest(|context| matches_complex_selector(selector.iter(), element, context, flags_setter)) [INFO] [stdout] 771 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 767 - && selector.as_ref().map_or(true, |selector| { [INFO] [stdout] 767 + && selector.as_ref().is_none_or(|selector| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> parser.rs:85:60 [INFO] [stdout] | [INFO] [stdout] 85 | if let Some(first_uppercase) = s.bytes().position(|byte| byte >= b'A' && byte <= b'Z') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Selector` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> parser.rs:934:3 [INFO] [stdout] | [INFO] [stdout] 934 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> parser.rs:1113:10 [INFO] [stdout] | [INFO] [stdout] 1113 | if self [INFO] [stdout] | __________^ [INFO] [stdout] 1114 | | .0 [INFO] [stdout] 1115 | | .next_sequence() [INFO] [stdout] 1116 | | .map_or(true, |x| matches!(x, Combinator::Child | Combinator::Descendant)) [INFO] [stdout] | |__________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 1116 - .map_or(true, |x| matches!(x, Combinator::Child | Combinator::Descendant)) [INFO] [stdout] 1116 + .is_none_or(|x| matches!(x, Combinator::Child | Combinator::Descendant)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser.rs:1379:5 [INFO] [stdout] | [INFO] [stdout] 1379 | &*self.1 [INFO] [stdout] | ^^^^^^^^ help: try: `&self.1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1619:9 [INFO] [stdout] | [INFO] [stdout] 1619 | / if !selector.visit(visitor) { [INFO] [stdout] 1620 | | return false; [INFO] [stdout] 1621 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1618 ~ Slotted(ref selector) [INFO] [stdout] 1619 ~ if !selector.visit(visitor) => { [INFO] [stdout] 1620 | return false; [INFO] [stdout] 1621 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1624:9 [INFO] [stdout] | [INFO] [stdout] 1624 | / if !selector.visit(visitor) { [INFO] [stdout] 1625 | | return false; [INFO] [stdout] 1626 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1623 ~ Host(Some(ref selector)) [INFO] [stdout] 1624 ~ if !selector.visit(visitor) => { [INFO] [stdout] 1625 | return false; [INFO] [stdout] 1626 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1632:9 [INFO] [stdout] | [INFO] [stdout] 1632 | / if !visitor.visit_attribute_selector( [INFO] [stdout] 1633 | | &NamespaceConstraint::Specific(&namespace_empty_string::()), [INFO] [stdout] 1634 | | local_name, [INFO] [stdout] 1635 | | local_name_lower, [INFO] [stdout] 1636 | | ) { [INFO] [stdout] 1637 | | return false; [INFO] [stdout] 1638 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1631 ~ } [INFO] [stdout] 1632 | if !visitor.visit_attribute_selector( [INFO] [stdout] ... [INFO] [stdout] 1635 | local_name_lower, [INFO] [stdout] 1636 ~ ) => { [INFO] [stdout] 1637 | return false; [INFO] [stdout] 1638 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1645:9 [INFO] [stdout] | [INFO] [stdout] 1645 | / if !visitor.visit_attribute_selector( [INFO] [stdout] 1646 | | &NamespaceConstraint::Specific(&namespace_empty_string::()), [INFO] [stdout] 1647 | | local_name, [INFO] [stdout] 1648 | | local_name, [INFO] [stdout] 1649 | | ) { [INFO] [stdout] 1650 | | return false; [INFO] [stdout] 1651 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1644 ~ } if !never_matches [INFO] [stdout] 1645 ~ && !visitor.visit_attribute_selector( [INFO] [stdout] 1646 | &NamespaceConstraint::Specific(&namespace_empty_string::()), [INFO] [stdout] 1647 | local_name, [INFO] [stdout] 1648 | local_name, [INFO] [stdout] 1649 ~ ) => { [INFO] [stdout] 1650 | return false; [INFO] [stdout] 1651 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1672:9 [INFO] [stdout] | [INFO] [stdout] 1672 | / if !pseudo_class.visit(visitor) { [INFO] [stdout] 1673 | | return false; [INFO] [stdout] 1674 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1671 ~ NonTSPseudoClass(ref pseudo_class) [INFO] [stdout] 1672 ~ if !pseudo_class.visit(visitor) => { [INFO] [stdout] 1673 | return false; [INFO] [stdout] 1674 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1678:9 [INFO] [stdout] | [INFO] [stdout] 1678 | / if !visitor.visit_selector_list(&list) { [INFO] [stdout] 1679 | | return false; [INFO] [stdout] 1680 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1677 ~ Negation(ref list) | Is(ref list) | Where(ref list) [INFO] [stdout] 1678 ~ if !visitor.visit_selector_list(&list) => { [INFO] [stdout] 1679 | return false; [INFO] [stdout] 1680 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> parser.rs:1683:9 [INFO] [stdout] | [INFO] [stdout] 1683 | / if !visitor.visit_selector_list(nth_of_data.selectors()) { [INFO] [stdout] 1684 | | return false; [INFO] [stdout] 1685 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1682 ~ NthOf(ref nth_of_data) [INFO] [stdout] 1683 ~ if !visitor.visit_selector_list(nth_of_data.selectors()) => { [INFO] [stdout] 1684 | return false; [INFO] [stdout] 1685 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> parser.rs:1678:41 [INFO] [stdout] | [INFO] [stdout] 1678 | if !visitor.visit_selector_list(&list) { [INFO] [stdout] | ^^^^^ help: change this to: `list` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> parser.rs:2126:8 [INFO] [stdout] | [INFO] [stdout] 2126 | if !input.expect_delim('&').is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `input.expect_delim('&').is_err()` [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: all variants have the same postfix: `Namespace` [INFO] [stdout] --> parser.rs:2372:1 [INFO] [stdout] | [INFO] [stdout] 2372 | / enum QNamePrefix<'i, Impl: SelectorImpl<'i>> { [INFO] [stdout] 2373 | | ImplicitNoNamespace, // `foo` in attr selectors [INFO] [stdout] 2374 | | ImplicitAnyNamespace, // `foo` in type selectors, without a default ns [INFO] [stdout] 2375 | | ImplicitDefaultNamespace(Impl::NamespaceUrl), // `foo` in type selectors, with a default ns [INFO] [stdout] ... | [INFO] [stdout] 2378 | | ExplicitNamespace(Impl::NamespacePrefix, Impl::NamespaceUrl), // `prefix|foo` [INFO] [stdout] 2379 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> parser.rs:2388:5 [INFO] [stdout] | [INFO] [stdout] 2388 | /// but the token is still returned. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> parser.rs:2411:10 [INFO] [stdout] | [INFO] [stdout] 2411 | Ok(&Token::Ident(ref local_name)) => Ok(OptionalQName::Some(namespace, Some(local_name.clone()))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 2411 - Ok(&Token::Ident(ref local_name)) => Ok(OptionalQName::Some(namespace, Some(local_name.clone()))), [INFO] [stdout] 2411 + Ok(Token::Ident(local_name)) => Ok(OptionalQName::Some(namespace, Some(local_name.clone()))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> parser.rs:2423:9 [INFO] [stdout] | [INFO] [stdout] 2423 | match input.next_including_whitespace().map(|t| t.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `input.next_including_whitespace().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> parser.rs:2450:13 [INFO] [stdout] | [INFO] [stdout] 2450 | match input.next_including_whitespace().map(|t| t.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `input.next_including_whitespace().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> parser.rs:2574:3 [INFO] [stdout] | [INFO] [stdout] 2574 | let case_sensitivity; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] ... [INFO] [stdout] 2584 | case_sensitivity = attribute_flags.to_case_sensitivity(local_name_lower_cow.as_ref(), namespace.is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `case_sensitivity` here [INFO] [stdout] | [INFO] [stdout] 2574 ~ [INFO] [stdout] 2575 | // copied from to_ascii_lowercase function, so we can know whether it is already lower case. [INFO] [stdout] ... [INFO] [stdout] 2583 | }; [INFO] [stdout] 2584 ~ let case_sensitivity = attribute_flags.to_case_sensitivity(local_name_lower_cow.as_ref(), namespace.is_some()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> parser.rs:2577:71 [INFO] [stdout] | [INFO] [stdout] 2577 | if let Some(first_uppercase) = local_name.bytes().position(|byte| byte >= b'A' && byte <= b'Z') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').contains(&byte)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> parser.rs:2621:26 [INFO] [stdout] | [INFO] [stdout] 2621 | fn to_case_sensitivity(self, local_name: &str, have_namespace: bool) -> ParsedCaseSensitivity { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> parser.rs:2970:21 [INFO] [stdout] | [INFO] [stdout] 2970 | let token = match input.next_including_whitespace().map(|t| t.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `input.next_including_whitespace().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> parser.rs:3415:28 [INFO] [stdout] | [INFO] [stdout] 3415 | fn parse_ns_expected<'i, 'a>( [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 3418 | expected: Option<&'a str>, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 3415 ~ fn parse_ns_expected<'i>( [INFO] [stdout] 3416 | input: &'i str, [INFO] [stdout] 3417 | parser: &DummyParser, [INFO] [stdout] 3418 ~ expected: Option<&str>, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> parser.rs:3853:9 [INFO] [stdout] | [INFO] [stdout] 3853 | (1 << 20) + (1 << 10) + (0 << 0), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider reducing it to: `((1 << 20) + (1 << 10))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> parser.rs:3853:33 [INFO] [stdout] | [INFO] [stdout] 3853 | (1 << 20) + (1 << 10) + (0 << 0), [INFO] [stdout] | ^^^^^^^^ help: consider reducing it to: `0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser.rs:883:31 [INFO] [stdout] | [INFO] [stdout] 883 | pub fn iter_raw_match_order(&self) -> slice::Iter> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 883 | pub fn iter_raw_match_order(&self) -> slice::Iter<'_, Component<'i, Impl>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser.rs:888:35 [INFO] [stdout] | [INFO] [stdout] 888 | pub fn iter_mut_raw_match_order(&mut self) -> slice::IterMut> { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 888 | pub fn iter_mut_raw_match_order(&mut self) -> slice::IterMut<'_, Component<'i, Impl>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser.rs:906:36 [INFO] [stdout] | [INFO] [stdout] 906 | pub fn iter_raw_parse_order_from(&self, offset: usize) -> Rev>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 906 | pub fn iter_raw_parse_order_from(&self, offset: usize) -> Rev>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.16s [INFO] running `Command { std: "docker" "inspect" "4ede31d7ad21af3c2737852ac79f5e732fe6bbafa1d4f455b2b6a4368610b851", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4ede31d7ad21af3c2737852ac79f5e732fe6bbafa1d4f455b2b6a4368610b851", kill_on_drop: false }` [INFO] [stdout] 4ede31d7ad21af3c2737852ac79f5e732fe6bbafa1d4f455b2b6a4368610b851