[INFO] fetching crate rs-trafilatura 0.2.2... [INFO] testing rs-trafilatura-0.2.2 against beta-2026-04-21 for beta-1.96-1 [INFO] extracting crate rs-trafilatura 0.2.2 into /workspace/builds/worker-0-tc2/source [INFO] removed /workspace/builds/worker-0-tc2/source/rust-toolchain.toml [INFO] started tweaking crates.io crate rs-trafilatura 0.2.2 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate rs-trafilatura 0.2.2 [INFO] tweaked toml for crates.io crate rs-trafilatura 0.2.2 written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate rs-trafilatura 0.2.2 on toolchain beta-2026-04-21 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate rs-trafilatura 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a7dffcc524bb0931466416816adccb3adff7f66f3f818fd07e8fefa4255e8f09 [INFO] running `Command { std: "docker" "start" "-a" "a7dffcc524bb0931466416816adccb3adff7f66f3f818fd07e8fefa4255e8f09", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a7dffcc524bb0931466416816adccb3adff7f66f3f818fd07e8fefa4255e8f09", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a7dffcc524bb0931466416816adccb3adff7f66f3f818fd07e8fefa4255e8f09", kill_on_drop: false }` [INFO] [stdout] a7dffcc524bb0931466416816adccb3adff7f66f3f818fd07e8fefa4255e8f09 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9ad44fb8692f9c2c61ebe0615a5ea34ea09f35361eb171e238d368fd95e4bef0 [INFO] running `Command { std: "docker" "start" "-a" "9ad44fb8692f9c2c61ebe0615a5ea34ea09f35361eb171e238d368fd95e4bef0", kill_on_drop: false }` [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling precomputed-hash v0.1.1 [INFO] [stderr] Compiling mac v0.1.1 [INFO] [stderr] Compiling phf_shared v0.13.1 [INFO] [stderr] Compiling dtoa v1.0.11 [INFO] [stderr] Compiling rustc-hash v2.1.1 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Compiling cssparser-macros v0.6.1 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling servo_arc v0.4.3 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futf v0.1.5 [INFO] [stderr] Compiling dtoa-short v0.3.5 [INFO] [stderr] Compiling web-page-classifier v0.1.0 [INFO] [stderr] Compiling tendril v0.4.3 [INFO] [stderr] Compiling phf_generator v0.13.1 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling phf_codegen v0.13.1 [INFO] [stderr] Compiling string_cache_codegen v0.6.1 [INFO] [stderr] Compiling phf_macros v0.13.1 [INFO] [stderr] Compiling string_cache v0.9.0 [INFO] [stderr] Compiling selectors v0.33.0 [INFO] [stderr] Compiling web_atoms v0.2.3 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling phf v0.13.1 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling cssparser v0.36.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling markup5ever v0.36.1 [INFO] [stderr] Compiling html5ever v0.36.1 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling dom_query v0.24.0 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling html-cleaning v0.3.0 [INFO] [stderr] Compiling quick_html2md v0.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling rs-trafilatura v0.2.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crate::result::Metadata` [INFO] [stdout] --> src/page_type/mod.rs:861:5 [INFO] [stdout] | [INFO] [stdout] 861 | use crate::result::Metadata; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Document`, `extend`, `is_void_element`, and `tail_nodes` [INFO] [stdout] --> src/etree.rs:24:22 [INFO] [stdout] | [INFO] [stdout] 24 | append, element, extend, is_void_element, iter, iter_descendants, iter_text, remove, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] 25 | set_tail, set_text, strip, strip_elements, strip_tags, sub_element, tail, tail_nodes, text, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 26 | Document, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CleaningOptions` [INFO] [stdout] --> src/html_processing.rs:202:42 [INFO] [stdout] | [INFO] [stdout] 202 | use html_cleaning::{HtmlCleaner, CleaningOptions}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `comments::extract_comments` [INFO] [stdout] --> src/extractor/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | pub use comments::extract_comments; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `baseline`, `candidate_is_usable`, `compare_external_extraction`, and `extract_with_fallback` [INFO] [stdout] --> src/extractor/mod.rs:54:20 [INFO] [stdout] | [INFO] [stdout] 54 | pub use fallback::{baseline, candidate_is_usable, compare_external_extraction, extract_with_fallback}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pipeline::extract_content` [INFO] [stdout] --> src/extractor/mod.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | pub use pipeline::extract_content; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `state::ExtractionState` [INFO] [stdout] --> src/extractor/mod.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | pub use state::ExtractionState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `examine_title_element`, `extract_dom_author`, `extract_dom_categories`, `extract_dom_license`, `extract_dom_sitename`, `extract_dom_tags`, `extract_dom_title`, and `extract_dom_url` [INFO] [stdout] --> src/metadata/mod.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | examine_title_element, extract_dom_author, extract_dom_categories, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 17 | extract_dom_license, extract_dom_sitename, extract_dom_tags, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | extract_dom_title, extract_dom_url, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json_ld::extract_json_ld` [INFO] [stdout] --> src/metadata/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use json_ld::extract_json_ld; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `examine_meta`, `extract_open_graph`, and `validate_metadata_name` [INFO] [stdout] --> src/metadata/mod.rs:21:21 [INFO] [stdout] | [INFO] [stdout] 21 | pub use meta_tags::{examine_meta, extract_open_graph, validate_metadata_name}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `best_total_len` is never read [INFO] [stdout] --> src/extract.rs:593:17 [INFO] [stdout] | [INFO] [stdout] 553 | best_total_len = total; [INFO] [stdout] | ---------------------- `best_total_len` is overwritten here before the previous value is read [INFO] [stdout] ... [INFO] [stdout] 593 | best_total_len = total; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `longer` [INFO] [stdout] --> src/extract.rs:743:17 [INFO] [stdout] | [INFO] [stdout] 743 | let longer = c.text_len.max(existing.len()); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_longer` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `options` [INFO] [stdout] --> src/extract.rs:644:46 [INFO] [stdout] | [INFO] [stdout] 644 | fn try_multi_candidate_merge(doc: &Document, options: &Options) -> Option { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `block_tags` [INFO] [stdout] --> src/extract.rs:1938:9 [INFO] [stdout] | [INFO] [stdout] 1938 | let block_tags = ["div", "p", "pre", "section", "article", "table", [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_tags` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a_count` [INFO] [stdout] --> src/extract.rs:2212:9 [INFO] [stdout] | [INFO] [stdout] 2212 | let a_count: i64 = match i64::try_from(el.select("a").length()) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_links` is never read [INFO] [stdout] --> src/page_type/ml.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | current_links = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 268 | current_links = sel.select("a").length() as u32; [INFO] [stdout] | ----------------------------------------------- `current_links` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_text_len` is never read [INFO] [stdout] --> src/page_type/ml.rs:265:13 [INFO] [stdout] | [INFO] [stdout] 265 | current_text_len = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 270 | current_text_len = text.trim().len() as u32; [INFO] [stdout] | ------------------------------------------- `current_text_len` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `compute_extraction_quality_ml` is never used [INFO] [stdout] --> src/extract.rs:775:4 [INFO] [stdout] | [INFO] [stdout] 775 | fn compute_extraction_quality_ml( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_link_dense_sections` is never used [INFO] [stdout] --> src/extract.rs:1150:4 [INFO] [stdout] | [INFO] [stdout] 1150 | fn strip_link_dense_sections(html: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `lenient_boilerplate` and `min_paragraph_density` are never read [INFO] [stdout] --> src/page_type/mod.rs:110:9 [INFO] [stdout] | [INFO] [stdout] 99 | pub(crate) struct ExtractionProfile { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 110 | pub lenient_boilerplate: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub min_paragraph_density: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExtractionProfile` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SERVICE_BOILERPLATE_SELECTORS` is never used [INFO] [stdout] --> src/page_type/mod.rs:1052:7 [INFO] [stdout] | [INFO] [stdout] 1052 | const SERVICE_BOILERPLATE_SELECTORS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_attribute` is never used [INFO] [stdout] --> src/dom.rs:63:8 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn remove_attribute(sel: &Selection, name: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `inner_html` is never used [INFO] [stdout] --> src/dom.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn inner_html(sel: &Selection) -> StrTendril { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `next_sibling` is never used [INFO] [stdout] --> src/dom.rs:147:8 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn next_sibling<'a>(sel: &Selection<'a>) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prev_sibling` is never used [INFO] [stdout] --> src/dom.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 156 | pub fn prev_sibling<'a>(sel: &Selection<'a>) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `next_element_sibling` is never used [INFO] [stdout] --> src/dom.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn next_element_sibling<'a>(sel: &Selection<'a>) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `query_selector` is never used [INFO] [stdout] --> src/dom.rs:201:8 [INFO] [stdout] | [INFO] [stdout] 201 | pub fn query_selector<'a>(sel: &Selection<'a>, selector: &str) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `query_selector_all` is never used [INFO] [stdout] --> src/dom.rs:210:8 [INFO] [stdout] | [INFO] [stdout] 210 | pub fn query_selector_all<'a>(sel: &Selection<'a>, selector: &str) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_elements_by_tag_name` is never used [INFO] [stdout] --> src/dom.rs:219:8 [INFO] [stdout] | [INFO] [stdout] 219 | pub fn get_elements_by_tag_name<'a>(sel: &Selection<'a>, tag: &str) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_tags` is never used [INFO] [stdout] --> src/dom.rs:237:8 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn strip_tags(sel: &Selection, tags: &[&str]) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `append_html` is never used [INFO] [stdout] --> src/dom.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 252 | pub fn append_html(sel: &Selection, html: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_inner_html` is never used [INFO] [stdout] --> src/dom.rs:260:8 [INFO] [stdout] | [INFO] [stdout] 260 | pub fn set_inner_html(sel: &Selection, html: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `replace_with_html` is never used [INFO] [stdout] --> src/dom.rs:268:8 [INFO] [stdout] | [INFO] [stdout] 268 | pub fn replace_with_html(sel: &Selection, html: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `replace_element` is never used [INFO] [stdout] --> src/dom.rs:278:8 [INFO] [stdout] | [INFO] [stdout] 278 | pub fn replace_element(old: &Selection, new: &Document) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_void_element` is never used [INFO] [stdout] --> src/dom.rs:297:8 [INFO] [stdout] | [INFO] [stdout] 297 | pub fn is_void_element(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_comments` is never used [INFO] [stdout] --> src/dom.rs:326:8 [INFO] [stdout] | [INFO] [stdout] 326 | pub fn remove_comments(_doc: &Document) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `append_child` is never used [INFO] [stdout] --> src/dom.rs:367:8 [INFO] [stdout] | [INFO] [stdout] 367 | pub fn append_child(parent: &Selection, child: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `child_nodes` is never used [INFO] [stdout] --> src/dom.rs:377:8 [INFO] [stdout] | [INFO] [stdout] 377 | pub fn child_nodes<'a>(sel: &Selection<'a>) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_all_attributes` is never used [INFO] [stdout] --> src/dom.rs:384:8 [INFO] [stdout] | [INFO] [stdout] 384 | pub fn clear_all_attributes(sel: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse` is never used [INFO] [stdout] --> src/dom.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | pub fn parse(html: &str) -> Document { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `PRECISION_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/discard.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 285 | pub static PRECISION_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `precision_discard_rule_1` is never used [INFO] [stdout] --> src/selector/discard.rs:293:8 [INFO] [stdout] | [INFO] [stdout] 293 | pub fn precision_discard_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TEASER_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/discard.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 309 | pub static TEASER_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `teaser_rule_1` is never used [INFO] [stdout] --> src/selector/discard.rs:317:8 [INFO] [stdout] | [INFO] [stdout] 317 | pub fn teaser_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_discardable` is never used [INFO] [stdout] --> src/selector/discard.rs:375:8 [INFO] [stdout] | [INFO] [stdout] 375 | pub fn find_discardable<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `PRECISION_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/precision.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 26 | pub static PRECISION_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `precision_discarded_content_rule_1` is never used [INFO] [stdout] --> src/selector/precision.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn precision_discarded_content_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `precision_discarded_content_rule_2` is never used [INFO] [stdout] --> src/selector/precision.rs:55:8 [INFO] [stdout] | [INFO] [stdout] 55 | pub fn precision_discarded_content_rule_2(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DISCARDED_TEASER` is never used [INFO] [stdout] --> src/selector/precision.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | pub static DISCARDED_TEASER: &[Rule] = &[discarded_teaser_rule_1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_teaser_rule_1` is never used [INFO] [stdout] --> src/selector/precision.rs:97:8 [INFO] [stdout] | [INFO] [stdout] 97 | pub fn discarded_teaser_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DISCARDED_IMAGE` is never used [INFO] [stdout] --> src/selector/precision.rs:125:12 [INFO] [stdout] | [INFO] [stdout] 125 | pub static DISCARDED_IMAGE: &[Rule] = &[discarded_image_rule_1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_image_rule_1` is never used [INFO] [stdout] --> src/selector/precision.rs:138:8 [INFO] [stdout] | [INFO] [stdout] 138 | pub fn discarded_image_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_discard_precision` is never used [INFO] [stdout] --> src/selector/precision.rs:175:8 [INFO] [stdout] | [INFO] [stdout] 175 | pub fn should_discard_precision(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_teaser` is never used [INFO] [stdout] --> src/selector/precision.rs:195:8 [INFO] [stdout] | [INFO] [stdout] 195 | pub fn is_teaser(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_discard` is never used [INFO] [stdout] --> src/selector/precision.rs:215:8 [INFO] [stdout] | [INFO] [stdout] 215 | pub fn is_image_discard(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `COMMENTS` is never used [INFO] [stdout] --> src/selector/comments.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub static COMMENTS: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_1` is never used [INFO] [stdout] --> src/selector/comments.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn comments_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_2` is never used [INFO] [stdout] --> src/selector/comments.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn comments_rule_2(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_3` is never used [INFO] [stdout] --> src/selector/comments.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn comments_rule_3(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_4` is never used [INFO] [stdout] --> src/selector/comments.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn comments_rule_4(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DISCARDED_COMMENTS` is never used [INFO] [stdout] --> src/selector/comments.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 137 | pub static DISCARDED_COMMENTS: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_comments_rule_1` is never used [INFO] [stdout] --> src/selector/comments.rs:150:8 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn discarded_comments_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_comments_rule_2` is never used [INFO] [stdout] --> src/selector/comments.rs:169:8 [INFO] [stdout] | [INFO] [stdout] 169 | pub fn discarded_comments_rule_2(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_comments_rule_3` is never used [INFO] [stdout] --> src/selector/comments.rs:181:8 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn discarded_comments_rule_3(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REMOVED_COMMENTS` is never used [INFO] [stdout] --> src/selector/comments.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 207 | pub static REMOVED_COMMENTS: &[Rule] = &[removed_comments_rule_1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `removed_comments_rule_1` is never used [INFO] [stdout] --> src/selector/comments.rs:216:8 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn removed_comments_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_comments` is never used [INFO] [stdout] --> src/selector/comments.rs:245:8 [INFO] [stdout] | [INFO] [stdout] 245 | pub fn find_comments<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_comment_section` is never used [INFO] [stdout] --> src/selector/comments.rs:257:8 [INFO] [stdout] | [INFO] [stdout] 257 | pub fn is_comment_section(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_comment_debris` is never used [INFO] [stdout] --> src/selector/comments.rs:263:8 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn is_comment_debris(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_remove_comments` is never used [INFO] [stdout] --> src/selector/comments.rs:269:8 [INFO] [stdout] | [INFO] [stdout] 269 | pub fn should_remove_comments(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_authors` is never used [INFO] [stdout] --> src/selector/meta.rs:517:8 [INFO] [stdout] | [INFO] [stdout] 517 | pub fn find_authors<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_titles` is never used [INFO] [stdout] --> src/selector/meta.rs:528:8 [INFO] [stdout] | [INFO] [stdout] 528 | pub fn find_titles<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_tags` is never used [INFO] [stdout] --> src/selector/meta.rs:539:8 [INFO] [stdout] | [INFO] [stdout] 539 | pub fn find_tags<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_categories` is never used [INFO] [stdout] --> src/selector/meta.rs:550:8 [INFO] [stdout] | [INFO] [stdout] 550 | pub fn find_categories<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_author_discard` is never used [INFO] [stdout] --> src/selector/meta.rs:561:8 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn is_author_discard(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_node_ancestors` is never used [INFO] [stdout] --> src/selector/utils.rs:41:8 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn get_node_ancestors<'a>(sel: &Selection<'a>, ancestor_tag: &str) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `id_class` is never used [INFO] [stdout] --> src/selector/utils.rs:147:8 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn id_class(sel: &Selection) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_tag` is never used [INFO] [stdout] --> src/selector/utils.rs:158:8 [INFO] [stdout] | [INFO] [stdout] 158 | pub fn is_tag(sel: &Selection, expected: &str) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_one_of_tags` is never used [INFO] [stdout] --> src/selector/utils.rs:180:8 [INFO] [stdout] | [INFO] [stdout] 180 | pub fn is_one_of_tags(sel: &Selection, tags: &[&str]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ELEMENT_WITH_SIZE_ATTR` is never used [INFO] [stdout] --> src/html_processing.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub static ELEMENT_WITH_SIZE_ATTR: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ALLOWED_ATTRIBUTES` is never used [INFO] [stdout] --> src/html_processing.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub static ALLOWED_ATTRIBUTES: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LB_TAGS` is never used [INFO] [stdout] --> src/html_processing.rs:82:8 [INFO] [stdout] | [INFO] [stdout] 82 | static XML_LB_TAGS: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_GRAPHIC_TAGS` is never used [INFO] [stdout] --> src/html_processing.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | static XML_GRAPHIC_TAGS: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_QUOTE_TAGS` is never used [INFO] [stdout] --> src/html_processing.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 96 | static XML_QUOTE_TAGS: [&str; 3] = ["blockquote", "pre", "q"]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_DUPLICATE_CHECK_SIZE` is never used [INFO] [stdout] --> src/html_processing.rs:102:7 [INFO] [stdout] | [INFO] [stdout] 102 | const MIN_DUPLICATE_CHECK_SIZE: usize = 100; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_DUPLICATE_COUNT` is never used [INFO] [stdout] --> src/html_processing.rs:105:7 [INFO] [stdout] | [INFO] [stdout] 105 | const MAX_DUPLICATE_COUNT: i32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `doc_cleaning` is never used [INFO] [stdout] --> src/html_processing.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn doc_cleaning(doc: &Document, opts: &Options) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_clean_selector` is never used [INFO] [stdout] --> src/html_processing.rs:268:4 [INFO] [stdout] | [INFO] [stdout] 268 | fn build_clean_selector(opts: &Options) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_strip_selector` is never used [INFO] [stdout] --> src/html_processing.rs:308:4 [INFO] [stdout] | [INFO] [stdout] 308 | fn build_strip_selector(opts: &Options) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `post_cleaning` is never used [INFO] [stdout] --> src/html_processing.rs:351:8 [INFO] [stdout] | [INFO] [stdout] 351 | pub fn post_cleaning(doc: &Document) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_by_link_density` is never used [INFO] [stdout] --> src/html_processing.rs:408:8 [INFO] [stdout] | [INFO] [stdout] 408 | pub fn delete_by_link_density( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `text_chars_test` is never used [INFO] [stdout] --> src/html_processing.rs:448:8 [INFO] [stdout] | [INFO] [stdout] 448 | pub fn text_chars_test(text: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `text_filter` is never used [INFO] [stdout] --> src/html_processing.rs:455:4 [INFO] [stdout] | [INFO] [stdout] 455 | fn text_filter(element: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_element` is never used [INFO] [stdout] --> src/html_processing.rs:656:4 [INFO] [stdout] | [INFO] [stdout] 656 | fn is_image_element(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_file` is never used [INFO] [stdout] --> src/html_processing.rs:678:4 [INFO] [stdout] | [INFO] [stdout] 678 | fn is_image_file(src: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `duplicate_test` is never used [INFO] [stdout] --> src/html_processing.rs:699:4 [INFO] [stdout] | [INFO] [stdout] 699 | fn duplicate_test(element: &Selection, cache: &mut LruCache) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_all_attributes` is never used [INFO] [stdout] --> src/html_processing.rs:720:4 [INFO] [stdout] | [INFO] [stdout] 720 | fn clear_all_attributes(sel: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_absolute_url` is never used [INFO] [stdout] --> src/html_processing.rs:730:4 [INFO] [stdout] | [INFO] [stdout] 730 | fn create_absolute_url(href: &str, base_url: Option<&str>) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_node` is never used [INFO] [stdout] --> src/html_processing.rs:779:8 [INFO] [stdout] | [INFO] [stdout] 779 | pub fn process_node(element: &Selection, cache: Option<&mut LruCache>, opts: &Options) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_text_node` is never used [INFO] [stdout] --> src/html_processing.rs:840:8 [INFO] [stdout] | [INFO] [stdout] 840 | pub fn handle_text_node( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prune_unwanted_nodes` is never used [INFO] [stdout] --> src/html_processing.rs:914:8 [INFO] [stdout] | [INFO] [stdout] 914 | pub fn prune_unwanted_nodes( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `convert_tags` is never used [INFO] [stdout] --> src/html_processing.rs:983:8 [INFO] [stdout] | [INFO] [stdout] 983 | pub fn convert_tags(tree: &Selection, opts: &Options) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_comments_node` is never used [INFO] [stdout] --> src/extractor/comments.rs:20:4 [INFO] [stdout] | [INFO] [stdout] 20 | fn process_comments_node<'a>( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_comments` is never used [INFO] [stdout] --> src/extractor/comments.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn extract_comments( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_with_fallback` is never used [INFO] [stdout] --> src/extractor/fallback.rs:604:8 [INFO] [stdout] | [INFO] [stdout] 604 | pub fn extract_with_fallback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_text_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn is_text_element(element: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `define_new_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn define_new_element(processed: Option<&Selection>, original: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_sub_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn add_sub_element<'a>( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_titles` is never used [INFO] [stdout] --> src/extractor/handlers.rs:78:8 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn handle_titles( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_formatting` is never used [INFO] [stdout] --> src/extractor/handlers.rs:154:8 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn handle_formatting( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_code_block_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:209:8 [INFO] [stdout] | [INFO] [stdout] 209 | pub fn is_code_block_element(element: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_code_blocks` is never used [INFO] [stdout] --> src/extractor/handlers.rs:245:8 [INFO] [stdout] | [INFO] [stdout] 245 | pub fn handle_code_blocks(element: &Selection, state: &mut ExtractionState) -> Document { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_other_elements` is never used [INFO] [stdout] --> src/extractor/handlers.rs:272:8 [INFO] [stdout] | [INFO] [stdout] 272 | pub fn handle_other_elements( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_image` is never used [INFO] [stdout] --> src/extractor/handlers.rs:327:8 [INFO] [stdout] | [INFO] [stdout] 327 | pub fn handle_image(element: &Selection) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_file` is never used [INFO] [stdout] --> src/extractor/handlers.rs:395:4 [INFO] [stdout] | [INFO] [stdout] 395 | fn is_image_file(src: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_nested_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:419:8 [INFO] [stdout] | [INFO] [stdout] 419 | pub fn process_nested_element( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_lists` is never used [INFO] [stdout] --> src/extractor/handlers.rs:460:8 [INFO] [stdout] | [INFO] [stdout] 460 | pub fn handle_lists( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_quotes` is never used [INFO] [stdout] --> src/extractor/handlers.rs:544:8 [INFO] [stdout] | [INFO] [stdout] 544 | pub fn handle_quotes( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_paragraphs` is never used [INFO] [stdout] --> src/extractor/handlers.rs:594:8 [INFO] [stdout] | [INFO] [stdout] 594 | pub fn handle_paragraphs( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_table` is never used [INFO] [stdout] --> src/extractor/handlers.rs:737:8 [INFO] [stdout] | [INFO] [stdout] 737 | pub fn handle_table( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_table_cell` is never used [INFO] [stdout] --> src/extractor/handlers.rs:815:4 [INFO] [stdout] | [INFO] [stdout] 815 | fn process_table_cell(cell: &Selection, state: &mut ExtractionState, opts: &Options) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `html_escape` is never used [INFO] [stdout] --> src/extractor/handlers.rs:878:4 [INFO] [stdout] | [INFO] [stdout] 878 | fn html_escape(s: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_text_elem` is never used [INFO] [stdout] --> src/extractor/pipeline.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn handle_text_elem( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `recover_wild_text` is never used [INFO] [stdout] --> src/extractor/pipeline.rs:91:8 [INFO] [stdout] | [INFO] [stdout] 91 | pub fn recover_wild_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_content` is never used [INFO] [stdout] --> src/extractor/pipeline.rs:170:8 [INFO] [stdout] | [INFO] [stdout] 170 | pub fn extract_content(doc: &Document, opts: &Options) -> (Document, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prune_unwanted_sections` is never used [INFO] [stdout] --> src/extractor/pruning.rs:141:8 [INFO] [stdout] | [INFO] [stdout] 141 | pub fn prune_unwanted_sections( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prune_in_place` is never used [INFO] [stdout] --> src/extractor/pruning.rs:211:4 [INFO] [stdout] | [INFO] [stdout] 211 | fn prune_in_place(tree: &Selection, rules: &[Rule]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_non_potential_tags` is never used [INFO] [stdout] --> src/extractor/pruning.rs:233:8 [INFO] [stdout] | [INFO] [stdout] 233 | pub fn strip_non_potential_tags( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExtractionState` is never constructed [INFO] [stdout] --> src/extractor/state.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct ExtractionState { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/extractor/state.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl ExtractionState { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn mark_done(&mut self, node_id: NodeId) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn is_done(&self, node_id: NodeId) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn is_potential_tag(&self, tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn add_potential_tag(&mut self, tag: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn remove_potential_tag(&mut self, tag: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn configure_from_options(&mut self, opts: &crate::Options) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn potential_tags(&self) -> &HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn clone_potential_tags(&self) -> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LIST_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub static XML_LIST_TAGS: [&str; 3] = ["ul", "ol", "dl"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_QUOTE_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub static XML_QUOTE_TAGS: [&str; 3] = ["blockquote", "pre", "q"]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HEAD_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub static XML_HEAD_TAGS: [&str; 7] = ["h1", "h2", "h3", "h4", "h5", "h6", "summary"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LB_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub static XML_LB_TAGS: [&str; 3] = ["br", "hr", "lb"]; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HI_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub static XML_HI_TAGS: [&str; 12] = [ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_REF_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub static XML_REF_TAGS: [&str; 1] = ["a"]; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_GRAPHIC_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 32 | pub static XML_GRAPHIC_TAGS: [&str; 1] = ["img"]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_ITEM_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub static XML_ITEM_TAGS: [&str; 3] = ["dd", "dt", "li"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_CELL_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | pub static XML_CELL_TAGS: [&str; 2] = ["th", "td"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LIST_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub static XML_LIST_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_QUOTE_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub static XML_QUOTE_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HEAD_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub static XML_HEAD_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LB_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 58 | pub static XML_LB_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HI_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub static XML_HI_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_REF_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 68 | pub static XML_REF_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_GRAPHIC_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub static XML_GRAPHIC_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_ITEM_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub static XML_ITEM_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_CELL_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub static XML_CELL_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_CLEAN` is never used [INFO] [stdout] --> src/extractor/tags.rs:91:12 [INFO] [stdout] | [INFO] [stdout] 91 | pub static TAGS_TO_CLEAN: [&str; 50] = [ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_CLEAN_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:104:12 [INFO] [stdout] | [INFO] [stdout] 104 | pub static TAGS_TO_CLEAN_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_STRIP` is never used [INFO] [stdout] --> src/extractor/tags.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 110 | pub static TAGS_TO_STRIP: [&str; 18] = [ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_STRIP_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:116:12 [INFO] [stdout] | [INFO] [stdout] 116 | pub static TAGS_TO_STRIP_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TABLE_TAGS_TO_STRIP_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub static TABLE_TAGS_TO_STRIP_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_clean_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:147:8 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn should_clean_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_strip_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:154:8 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn should_strip_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_remove_if_empty` is never used [INFO] [stdout] --> src/extractor/tags.rs:161:8 [INFO] [stdout] | [INFO] [stdout] 161 | pub fn should_remove_if_empty(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAG_CATALOG` is never used [INFO] [stdout] --> src/extractor/tags.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | pub static TAG_CATALOG: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `FORMAT_TAG_CATALOG` is never used [INFO] [stdout] --> src/extractor/tags.rs:182:12 [INFO] [stdout] | [INFO] [stdout] 182 | pub static FORMAT_TAG_CATALOG: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_list_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:210:8 [INFO] [stdout] | [INFO] [stdout] 210 | pub fn is_xml_list_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_quote_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:217:8 [INFO] [stdout] | [INFO] [stdout] 217 | pub fn is_xml_quote_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_head_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:224:8 [INFO] [stdout] | [INFO] [stdout] 224 | pub fn is_xml_head_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_lb_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | pub fn is_xml_lb_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_hi_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:238:8 [INFO] [stdout] | [INFO] [stdout] 238 | pub fn is_xml_hi_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_ref_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:245:8 [INFO] [stdout] | [INFO] [stdout] 245 | pub fn is_xml_ref_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_graphic_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 252 | pub fn is_xml_graphic_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_item_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:259:8 [INFO] [stdout] | [INFO] [stdout] 259 | pub fn is_xml_item_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_cell_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:266:8 [INFO] [stdout] | [INFO] [stdout] 266 | pub fn is_xml_cell_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_in_tag_catalog` is never used [INFO] [stdout] --> src/extractor/tags.rs:273:8 [INFO] [stdout] | [INFO] [stdout] 273 | pub fn is_in_tag_catalog(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_format_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:280:8 [INFO] [stdout] | [INFO] [stdout] 280 | pub fn is_format_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:287:8 [INFO] [stdout] | [INFO] [stdout] 287 | pub fn is_valid_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_metadata_light` is never used [INFO] [stdout] --> src/metadata/mod.rs:238:8 [INFO] [stdout] | [INFO] [stdout] 238 | pub fn extract_metadata_light(doc: &Document, opts: &Options) -> Metadata { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `types` and `parent` are never read [INFO] [stdout] --> src/metadata/json_ld.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct SchemaData { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 17 | /// Schema @type values [INFO] [stdout] 18 | pub types: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub parent: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SchemaData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_open_graph` is never used [INFO] [stdout] --> src/metadata/meta_tags.rs:216:8 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn extract_open_graph(doc: &Document, original: Metadata) -> Metadata { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_base_url` is never used [INFO] [stdout] --> src/url_utils.rs:107:8 [INFO] [stdout] | [INFO] [stdout] 107 | pub fn get_base_url(url_str: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_url` is never used [INFO] [stdout] --> src/url_utils.rs:175:8 [INFO] [stdout] | [INFO] [stdout] 175 | pub fn parse_url(url_str: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize_url` is never used [INFO] [stdout] --> src/url_utils.rs:186:8 [INFO] [stdout] | [INFO] [stdout] 186 | pub fn normalize_url(url_str: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `urls_match` is never used [INFO] [stdout] --> src/url_utils.rs:205:8 [INFO] [stdout] | [INFO] [stdout] 205 | pub fn urls_match(url1: &str, url2: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LinkDensityResult` is never constructed [INFO] [stdout] --> src/link_density.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct LinkDensityResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `link_density_test_with_info` is never used [INFO] [stdout] --> src/link_density.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 156 | pub fn link_density_test_with_info(element: &Selection, options: &Options) -> (bool, bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.36s [INFO] running `Command { std: "docker" "inspect" "9ad44fb8692f9c2c61ebe0615a5ea34ea09f35361eb171e238d368fd95e4bef0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9ad44fb8692f9c2c61ebe0615a5ea34ea09f35361eb171e238d368fd95e4bef0", kill_on_drop: false }` [INFO] [stdout] 9ad44fb8692f9c2c61ebe0615a5ea34ea09f35361eb171e238d368fd95e4bef0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6e5ce5c2497e88095eb80b1baffafeb88d7f52a55e14cebb116b1ae273db75fd [INFO] running `Command { std: "docker" "start" "-a" "6e5ce5c2497e88095eb80b1baffafeb88d7f52a55e14cebb116b1ae273db75fd", kill_on_drop: false }` [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling zerocopy-derive v0.8.47 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling is-terminal v0.4.17 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling criterion-plot v0.5.0 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling zerocopy v0.8.47 [INFO] [stderr] Compiling rs-trafilatura v0.2.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crate::result::Metadata` [INFO] [stdout] --> src/page_type/mod.rs:861:5 [INFO] [stdout] | [INFO] [stdout] 861 | use crate::result::Metadata; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Document`, `extend`, `is_void_element`, and `tail_nodes` [INFO] [stdout] --> src/etree.rs:24:22 [INFO] [stdout] | [INFO] [stdout] 24 | append, element, extend, is_void_element, iter, iter_descendants, iter_text, remove, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] 25 | set_tail, set_text, strip, strip_elements, strip_tags, sub_element, tail, tail_nodes, text, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 26 | Document, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CleaningOptions` [INFO] [stdout] --> src/html_processing.rs:202:42 [INFO] [stdout] | [INFO] [stdout] 202 | use html_cleaning::{HtmlCleaner, CleaningOptions}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `comments::extract_comments` [INFO] [stdout] --> src/extractor/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | pub use comments::extract_comments; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `baseline`, `candidate_is_usable`, `compare_external_extraction`, and `extract_with_fallback` [INFO] [stdout] --> src/extractor/mod.rs:54:20 [INFO] [stdout] | [INFO] [stdout] 54 | pub use fallback::{baseline, candidate_is_usable, compare_external_extraction, extract_with_fallback}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pipeline::extract_content` [INFO] [stdout] --> src/extractor/mod.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | pub use pipeline::extract_content; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `state::ExtractionState` [INFO] [stdout] --> src/extractor/mod.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | pub use state::ExtractionState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `examine_title_element`, `extract_dom_author`, `extract_dom_categories`, `extract_dom_license`, `extract_dom_sitename`, `extract_dom_tags`, `extract_dom_title`, and `extract_dom_url` [INFO] [stdout] --> src/metadata/mod.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | examine_title_element, extract_dom_author, extract_dom_categories, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 17 | extract_dom_license, extract_dom_sitename, extract_dom_tags, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | extract_dom_title, extract_dom_url, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json_ld::extract_json_ld` [INFO] [stdout] --> src/metadata/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use json_ld::extract_json_ld; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `examine_meta`, `extract_open_graph`, and `validate_metadata_name` [INFO] [stdout] --> src/metadata/mod.rs:21:21 [INFO] [stdout] | [INFO] [stdout] 21 | pub use meta_tags::{examine_meta, extract_open_graph, validate_metadata_name}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stdout] warning: value assigned to `best_total_len` is never read [INFO] [stdout] --> src/extract.rs:593:17 [INFO] [stdout] | [INFO] [stdout] 553 | best_total_len = total; [INFO] [stdout] | ---------------------- `best_total_len` is overwritten here before the previous value is read [INFO] [stdout] ... [INFO] [stdout] 593 | best_total_len = total; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `longer` [INFO] [stdout] --> src/extract.rs:743:17 [INFO] [stdout] | [INFO] [stdout] 743 | let longer = c.text_len.max(existing.len()); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_longer` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `options` [INFO] [stdout] --> src/extract.rs:644:46 [INFO] [stdout] | [INFO] [stdout] 644 | fn try_multi_candidate_merge(doc: &Document, options: &Options) -> Option { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `block_tags` [INFO] [stdout] --> src/extract.rs:1938:9 [INFO] [stdout] | [INFO] [stdout] 1938 | let block_tags = ["div", "p", "pre", "section", "article", "table", [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_tags` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a_count` [INFO] [stdout] --> src/extract.rs:2212:9 [INFO] [stdout] | [INFO] [stdout] 2212 | let a_count: i64 = match i64::try_from(el.select("a").length()) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_links` is never read [INFO] [stdout] --> src/page_type/ml.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | current_links = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 268 | current_links = sel.select("a").length() as u32; [INFO] [stdout] | ----------------------------------------------- `current_links` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_text_len` is never read [INFO] [stdout] --> src/page_type/ml.rs:265:13 [INFO] [stdout] | [INFO] [stdout] 265 | current_text_len = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 270 | current_text_len = text.trim().len() as u32; [INFO] [stdout] | ------------------------------------------- `current_text_len` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `compute_extraction_quality_ml` is never used [INFO] [stdout] --> src/extract.rs:775:4 [INFO] [stdout] | [INFO] [stdout] 775 | fn compute_extraction_quality_ml( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_link_dense_sections` is never used [INFO] [stdout] --> src/extract.rs:1150:4 [INFO] [stdout] | [INFO] [stdout] 1150 | fn strip_link_dense_sections(html: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `lenient_boilerplate` and `min_paragraph_density` are never read [INFO] [stdout] --> src/page_type/mod.rs:110:9 [INFO] [stdout] | [INFO] [stdout] 99 | pub(crate) struct ExtractionProfile { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 110 | pub lenient_boilerplate: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub min_paragraph_density: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExtractionProfile` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SERVICE_BOILERPLATE_SELECTORS` is never used [INFO] [stdout] --> src/page_type/mod.rs:1052:7 [INFO] [stdout] | [INFO] [stdout] 1052 | const SERVICE_BOILERPLATE_SELECTORS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_attribute` is never used [INFO] [stdout] --> src/dom.rs:63:8 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn remove_attribute(sel: &Selection, name: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `inner_html` is never used [INFO] [stdout] --> src/dom.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn inner_html(sel: &Selection) -> StrTendril { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `next_sibling` is never used [INFO] [stdout] --> src/dom.rs:147:8 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn next_sibling<'a>(sel: &Selection<'a>) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prev_sibling` is never used [INFO] [stdout] --> src/dom.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 156 | pub fn prev_sibling<'a>(sel: &Selection<'a>) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `next_element_sibling` is never used [INFO] [stdout] --> src/dom.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn next_element_sibling<'a>(sel: &Selection<'a>) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `query_selector` is never used [INFO] [stdout] --> src/dom.rs:201:8 [INFO] [stdout] | [INFO] [stdout] 201 | pub fn query_selector<'a>(sel: &Selection<'a>, selector: &str) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `query_selector_all` is never used [INFO] [stdout] --> src/dom.rs:210:8 [INFO] [stdout] | [INFO] [stdout] 210 | pub fn query_selector_all<'a>(sel: &Selection<'a>, selector: &str) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_elements_by_tag_name` is never used [INFO] [stdout] --> src/dom.rs:219:8 [INFO] [stdout] | [INFO] [stdout] 219 | pub fn get_elements_by_tag_name<'a>(sel: &Selection<'a>, tag: &str) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_tags` is never used [INFO] [stdout] --> src/dom.rs:237:8 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn strip_tags(sel: &Selection, tags: &[&str]) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `append_html` is never used [INFO] [stdout] --> src/dom.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 252 | pub fn append_html(sel: &Selection, html: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_inner_html` is never used [INFO] [stdout] --> src/dom.rs:260:8 [INFO] [stdout] | [INFO] [stdout] 260 | pub fn set_inner_html(sel: &Selection, html: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `replace_with_html` is never used [INFO] [stdout] --> src/dom.rs:268:8 [INFO] [stdout] | [INFO] [stdout] 268 | pub fn replace_with_html(sel: &Selection, html: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `replace_element` is never used [INFO] [stdout] --> src/dom.rs:278:8 [INFO] [stdout] | [INFO] [stdout] 278 | pub fn replace_element(old: &Selection, new: &Document) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_void_element` is never used [INFO] [stdout] --> src/dom.rs:297:8 [INFO] [stdout] | [INFO] [stdout] 297 | pub fn is_void_element(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_comments` is never used [INFO] [stdout] --> src/dom.rs:326:8 [INFO] [stdout] | [INFO] [stdout] 326 | pub fn remove_comments(_doc: &Document) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `append_child` is never used [INFO] [stdout] --> src/dom.rs:367:8 [INFO] [stdout] | [INFO] [stdout] 367 | pub fn append_child(parent: &Selection, child: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `child_nodes` is never used [INFO] [stdout] --> src/dom.rs:377:8 [INFO] [stdout] | [INFO] [stdout] 377 | pub fn child_nodes<'a>(sel: &Selection<'a>) -> Selection<'a> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_all_attributes` is never used [INFO] [stdout] --> src/dom.rs:384:8 [INFO] [stdout] | [INFO] [stdout] 384 | pub fn clear_all_attributes(sel: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse` is never used [INFO] [stdout] --> src/dom.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | pub fn parse(html: &str) -> Document { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `PRECISION_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/discard.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 285 | pub static PRECISION_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `precision_discard_rule_1` is never used [INFO] [stdout] --> src/selector/discard.rs:293:8 [INFO] [stdout] | [INFO] [stdout] 293 | pub fn precision_discard_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TEASER_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/discard.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 309 | pub static TEASER_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `teaser_rule_1` is never used [INFO] [stdout] --> src/selector/discard.rs:317:8 [INFO] [stdout] | [INFO] [stdout] 317 | pub fn teaser_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_discardable` is never used [INFO] [stdout] --> src/selector/discard.rs:375:8 [INFO] [stdout] | [INFO] [stdout] 375 | pub fn find_discardable<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `PRECISION_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/precision.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 26 | pub static PRECISION_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `precision_discarded_content_rule_1` is never used [INFO] [stdout] --> src/selector/precision.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn precision_discarded_content_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `precision_discarded_content_rule_2` is never used [INFO] [stdout] --> src/selector/precision.rs:55:8 [INFO] [stdout] | [INFO] [stdout] 55 | pub fn precision_discarded_content_rule_2(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DISCARDED_TEASER` is never used [INFO] [stdout] --> src/selector/precision.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | pub static DISCARDED_TEASER: &[Rule] = &[discarded_teaser_rule_1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_teaser_rule_1` is never used [INFO] [stdout] --> src/selector/precision.rs:97:8 [INFO] [stdout] | [INFO] [stdout] 97 | pub fn discarded_teaser_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DISCARDED_IMAGE` is never used [INFO] [stdout] --> src/selector/precision.rs:125:12 [INFO] [stdout] | [INFO] [stdout] 125 | pub static DISCARDED_IMAGE: &[Rule] = &[discarded_image_rule_1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_image_rule_1` is never used [INFO] [stdout] --> src/selector/precision.rs:138:8 [INFO] [stdout] | [INFO] [stdout] 138 | pub fn discarded_image_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_discard_precision` is never used [INFO] [stdout] --> src/selector/precision.rs:175:8 [INFO] [stdout] | [INFO] [stdout] 175 | pub fn should_discard_precision(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_teaser` is never used [INFO] [stdout] --> src/selector/precision.rs:195:8 [INFO] [stdout] | [INFO] [stdout] 195 | pub fn is_teaser(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_discard` is never used [INFO] [stdout] --> src/selector/precision.rs:215:8 [INFO] [stdout] | [INFO] [stdout] 215 | pub fn is_image_discard(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `COMMENTS` is never used [INFO] [stdout] --> src/selector/comments.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub static COMMENTS: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_1` is never used [INFO] [stdout] --> src/selector/comments.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn comments_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_2` is never used [INFO] [stdout] --> src/selector/comments.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn comments_rule_2(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_3` is never used [INFO] [stdout] --> src/selector/comments.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn comments_rule_3(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `comments_rule_4` is never used [INFO] [stdout] --> src/selector/comments.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn comments_rule_4(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `DISCARDED_COMMENTS` is never used [INFO] [stdout] --> src/selector/comments.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 137 | pub static DISCARDED_COMMENTS: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_comments_rule_1` is never used [INFO] [stdout] --> src/selector/comments.rs:150:8 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn discarded_comments_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_comments_rule_2` is never used [INFO] [stdout] --> src/selector/comments.rs:169:8 [INFO] [stdout] | [INFO] [stdout] 169 | pub fn discarded_comments_rule_2(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discarded_comments_rule_3` is never used [INFO] [stdout] --> src/selector/comments.rs:181:8 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn discarded_comments_rule_3(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REMOVED_COMMENTS` is never used [INFO] [stdout] --> src/selector/comments.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 207 | pub static REMOVED_COMMENTS: &[Rule] = &[removed_comments_rule_1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `removed_comments_rule_1` is never used [INFO] [stdout] --> src/selector/comments.rs:216:8 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn removed_comments_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_comments` is never used [INFO] [stdout] --> src/selector/comments.rs:245:8 [INFO] [stdout] | [INFO] [stdout] 245 | pub fn find_comments<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_comment_section` is never used [INFO] [stdout] --> src/selector/comments.rs:257:8 [INFO] [stdout] | [INFO] [stdout] 257 | pub fn is_comment_section(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_comment_debris` is never used [INFO] [stdout] --> src/selector/comments.rs:263:8 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn is_comment_debris(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_remove_comments` is never used [INFO] [stdout] --> src/selector/comments.rs:269:8 [INFO] [stdout] | [INFO] [stdout] 269 | pub fn should_remove_comments(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_authors` is never used [INFO] [stdout] --> src/selector/meta.rs:517:8 [INFO] [stdout] | [INFO] [stdout] 517 | pub fn find_authors<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_titles` is never used [INFO] [stdout] --> src/selector/meta.rs:528:8 [INFO] [stdout] | [INFO] [stdout] 528 | pub fn find_titles<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_tags` is never used [INFO] [stdout] --> src/selector/meta.rs:539:8 [INFO] [stdout] | [INFO] [stdout] 539 | pub fn find_tags<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_categories` is never used [INFO] [stdout] --> src/selector/meta.rs:550:8 [INFO] [stdout] | [INFO] [stdout] 550 | pub fn find_categories<'a>(root: &Selection<'a>) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_author_discard` is never used [INFO] [stdout] --> src/selector/meta.rs:561:8 [INFO] [stdout] | [INFO] [stdout] 561 | pub fn is_author_discard(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_node_ancestors` is never used [INFO] [stdout] --> src/selector/utils.rs:41:8 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn get_node_ancestors<'a>(sel: &Selection<'a>, ancestor_tag: &str) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `id_class` is never used [INFO] [stdout] --> src/selector/utils.rs:147:8 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn id_class(sel: &Selection) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_tag` is never used [INFO] [stdout] --> src/selector/utils.rs:158:8 [INFO] [stdout] | [INFO] [stdout] 158 | pub fn is_tag(sel: &Selection, expected: &str) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_one_of_tags` is never used [INFO] [stdout] --> src/selector/utils.rs:180:8 [INFO] [stdout] | [INFO] [stdout] 180 | pub fn is_one_of_tags(sel: &Selection, tags: &[&str]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ELEMENT_WITH_SIZE_ATTR` is never used [INFO] [stdout] --> src/html_processing.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub static ELEMENT_WITH_SIZE_ATTR: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ALLOWED_ATTRIBUTES` is never used [INFO] [stdout] --> src/html_processing.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub static ALLOWED_ATTRIBUTES: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LB_TAGS` is never used [INFO] [stdout] --> src/html_processing.rs:82:8 [INFO] [stdout] | [INFO] [stdout] 82 | static XML_LB_TAGS: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_GRAPHIC_TAGS` is never used [INFO] [stdout] --> src/html_processing.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | static XML_GRAPHIC_TAGS: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_QUOTE_TAGS` is never used [INFO] [stdout] --> src/html_processing.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 96 | static XML_QUOTE_TAGS: [&str; 3] = ["blockquote", "pre", "q"]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_DUPLICATE_CHECK_SIZE` is never used [INFO] [stdout] --> src/html_processing.rs:102:7 [INFO] [stdout] | [INFO] [stdout] 102 | const MIN_DUPLICATE_CHECK_SIZE: usize = 100; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_DUPLICATE_COUNT` is never used [INFO] [stdout] --> src/html_processing.rs:105:7 [INFO] [stdout] | [INFO] [stdout] 105 | const MAX_DUPLICATE_COUNT: i32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `doc_cleaning` is never used [INFO] [stdout] --> src/html_processing.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn doc_cleaning(doc: &Document, opts: &Options) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_clean_selector` is never used [INFO] [stdout] --> src/html_processing.rs:268:4 [INFO] [stdout] | [INFO] [stdout] 268 | fn build_clean_selector(opts: &Options) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_strip_selector` is never used [INFO] [stdout] --> src/html_processing.rs:308:4 [INFO] [stdout] | [INFO] [stdout] 308 | fn build_strip_selector(opts: &Options) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `post_cleaning` is never used [INFO] [stdout] --> src/html_processing.rs:351:8 [INFO] [stdout] | [INFO] [stdout] 351 | pub fn post_cleaning(doc: &Document) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_by_link_density` is never used [INFO] [stdout] --> src/html_processing.rs:408:8 [INFO] [stdout] | [INFO] [stdout] 408 | pub fn delete_by_link_density( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `text_chars_test` is never used [INFO] [stdout] --> src/html_processing.rs:448:8 [INFO] [stdout] | [INFO] [stdout] 448 | pub fn text_chars_test(text: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `text_filter` is never used [INFO] [stdout] --> src/html_processing.rs:455:4 [INFO] [stdout] | [INFO] [stdout] 455 | fn text_filter(element: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_element` is never used [INFO] [stdout] --> src/html_processing.rs:656:4 [INFO] [stdout] | [INFO] [stdout] 656 | fn is_image_element(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_file` is never used [INFO] [stdout] --> src/html_processing.rs:678:4 [INFO] [stdout] | [INFO] [stdout] 678 | fn is_image_file(src: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `duplicate_test` is never used [INFO] [stdout] --> src/html_processing.rs:699:4 [INFO] [stdout] | [INFO] [stdout] 699 | fn duplicate_test(element: &Selection, cache: &mut LruCache) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `clear_all_attributes` is never used [INFO] [stdout] --> src/html_processing.rs:720:4 [INFO] [stdout] | [INFO] [stdout] 720 | fn clear_all_attributes(sel: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_absolute_url` is never used [INFO] [stdout] --> src/html_processing.rs:730:4 [INFO] [stdout] | [INFO] [stdout] 730 | fn create_absolute_url(href: &str, base_url: Option<&str>) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_node` is never used [INFO] [stdout] --> src/html_processing.rs:779:8 [INFO] [stdout] | [INFO] [stdout] 779 | pub fn process_node(element: &Selection, cache: Option<&mut LruCache>, opts: &Options) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_text_node` is never used [INFO] [stdout] --> src/html_processing.rs:840:8 [INFO] [stdout] | [INFO] [stdout] 840 | pub fn handle_text_node( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prune_unwanted_nodes` is never used [INFO] [stdout] --> src/html_processing.rs:914:8 [INFO] [stdout] | [INFO] [stdout] 914 | pub fn prune_unwanted_nodes( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `convert_tags` is never used [INFO] [stdout] --> src/html_processing.rs:983:8 [INFO] [stdout] | [INFO] [stdout] 983 | pub fn convert_tags(tree: &Selection, opts: &Options) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_comments_node` is never used [INFO] [stdout] --> src/extractor/comments.rs:20:4 [INFO] [stdout] | [INFO] [stdout] 20 | fn process_comments_node<'a>( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_comments` is never used [INFO] [stdout] --> src/extractor/comments.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn extract_comments( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_with_fallback` is never used [INFO] [stdout] --> src/extractor/fallback.rs:604:8 [INFO] [stdout] | [INFO] [stdout] 604 | pub fn extract_with_fallback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_text_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn is_text_element(element: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `define_new_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn define_new_element(processed: Option<&Selection>, original: &Selection) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_sub_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn add_sub_element<'a>( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_titles` is never used [INFO] [stdout] --> src/extractor/handlers.rs:78:8 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn handle_titles( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_formatting` is never used [INFO] [stdout] --> src/extractor/handlers.rs:154:8 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn handle_formatting( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_code_block_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:209:8 [INFO] [stdout] | [INFO] [stdout] 209 | pub fn is_code_block_element(element: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_code_blocks` is never used [INFO] [stdout] --> src/extractor/handlers.rs:245:8 [INFO] [stdout] | [INFO] [stdout] 245 | pub fn handle_code_blocks(element: &Selection, state: &mut ExtractionState) -> Document { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_other_elements` is never used [INFO] [stdout] --> src/extractor/handlers.rs:272:8 [INFO] [stdout] | [INFO] [stdout] 272 | pub fn handle_other_elements( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_image` is never used [INFO] [stdout] --> src/extractor/handlers.rs:327:8 [INFO] [stdout] | [INFO] [stdout] 327 | pub fn handle_image(element: &Selection) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_image_file` is never used [INFO] [stdout] --> src/extractor/handlers.rs:395:4 [INFO] [stdout] | [INFO] [stdout] 395 | fn is_image_file(src: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_nested_element` is never used [INFO] [stdout] --> src/extractor/handlers.rs:419:8 [INFO] [stdout] | [INFO] [stdout] 419 | pub fn process_nested_element( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_lists` is never used [INFO] [stdout] --> src/extractor/handlers.rs:460:8 [INFO] [stdout] | [INFO] [stdout] 460 | pub fn handle_lists( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_quotes` is never used [INFO] [stdout] --> src/extractor/handlers.rs:544:8 [INFO] [stdout] | [INFO] [stdout] 544 | pub fn handle_quotes( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_paragraphs` is never used [INFO] [stdout] --> src/extractor/handlers.rs:594:8 [INFO] [stdout] | [INFO] [stdout] 594 | pub fn handle_paragraphs( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_table` is never used [INFO] [stdout] --> src/extractor/handlers.rs:737:8 [INFO] [stdout] | [INFO] [stdout] 737 | pub fn handle_table( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_table_cell` is never used [INFO] [stdout] --> src/extractor/handlers.rs:815:4 [INFO] [stdout] | [INFO] [stdout] 815 | fn process_table_cell(cell: &Selection, state: &mut ExtractionState, opts: &Options) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `html_escape` is never used [INFO] [stdout] --> src/extractor/handlers.rs:878:4 [INFO] [stdout] | [INFO] [stdout] 878 | fn html_escape(s: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_text_elem` is never used [INFO] [stdout] --> src/extractor/pipeline.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn handle_text_elem( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `recover_wild_text` is never used [INFO] [stdout] --> src/extractor/pipeline.rs:91:8 [INFO] [stdout] | [INFO] [stdout] 91 | pub fn recover_wild_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_content` is never used [INFO] [stdout] --> src/extractor/pipeline.rs:170:8 [INFO] [stdout] | [INFO] [stdout] 170 | pub fn extract_content(doc: &Document, opts: &Options) -> (Document, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prune_unwanted_sections` is never used [INFO] [stdout] --> src/extractor/pruning.rs:141:8 [INFO] [stdout] | [INFO] [stdout] 141 | pub fn prune_unwanted_sections( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prune_in_place` is never used [INFO] [stdout] --> src/extractor/pruning.rs:211:4 [INFO] [stdout] | [INFO] [stdout] 211 | fn prune_in_place(tree: &Selection, rules: &[Rule]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_non_potential_tags` is never used [INFO] [stdout] --> src/extractor/pruning.rs:233:8 [INFO] [stdout] | [INFO] [stdout] 233 | pub fn strip_non_potential_tags( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExtractionState` is never constructed [INFO] [stdout] --> src/extractor/state.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct ExtractionState { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/extractor/state.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl ExtractionState { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn mark_done(&mut self, node_id: NodeId) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn is_done(&self, node_id: NodeId) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn is_potential_tag(&self, tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn add_potential_tag(&mut self, tag: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn remove_potential_tag(&mut self, tag: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn configure_from_options(&mut self, opts: &crate::Options) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn potential_tags(&self) -> &HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn clone_potential_tags(&self) -> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LIST_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub static XML_LIST_TAGS: [&str; 3] = ["ul", "ol", "dl"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_QUOTE_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub static XML_QUOTE_TAGS: [&str; 3] = ["blockquote", "pre", "q"]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HEAD_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub static XML_HEAD_TAGS: [&str; 7] = ["h1", "h2", "h3", "h4", "h5", "h6", "summary"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LB_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub static XML_LB_TAGS: [&str; 3] = ["br", "hr", "lb"]; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HI_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub static XML_HI_TAGS: [&str; 12] = [ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_REF_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub static XML_REF_TAGS: [&str; 1] = ["a"]; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_GRAPHIC_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 32 | pub static XML_GRAPHIC_TAGS: [&str; 1] = ["img"]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_ITEM_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub static XML_ITEM_TAGS: [&str; 3] = ["dd", "dt", "li"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_CELL_TAGS` is never used [INFO] [stdout] --> src/extractor/tags.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | pub static XML_CELL_TAGS: [&str; 2] = ["th", "td"]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LIST_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub static XML_LIST_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_QUOTE_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub static XML_QUOTE_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HEAD_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub static XML_HEAD_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_LB_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 58 | pub static XML_LB_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_HI_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub static XML_HI_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_REF_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 68 | pub static XML_REF_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_GRAPHIC_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub static XML_GRAPHIC_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_ITEM_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub static XML_ITEM_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `XML_CELL_TAG_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub static XML_CELL_TAG_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_CLEAN` is never used [INFO] [stdout] --> src/extractor/tags.rs:91:12 [INFO] [stdout] | [INFO] [stdout] 91 | pub static TAGS_TO_CLEAN: [&str; 50] = [ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_CLEAN_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:104:12 [INFO] [stdout] | [INFO] [stdout] 104 | pub static TAGS_TO_CLEAN_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_STRIP` is never used [INFO] [stdout] --> src/extractor/tags.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 110 | pub static TAGS_TO_STRIP: [&str; 18] = [ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAGS_TO_STRIP_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:116:12 [INFO] [stdout] | [INFO] [stdout] 116 | pub static TAGS_TO_STRIP_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TABLE_TAGS_TO_STRIP_SET` is never used [INFO] [stdout] --> src/extractor/tags.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub static TABLE_TAGS_TO_STRIP_SET: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_clean_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:147:8 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn should_clean_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_strip_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:154:8 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn should_strip_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_remove_if_empty` is never used [INFO] [stdout] --> src/extractor/tags.rs:161:8 [INFO] [stdout] | [INFO] [stdout] 161 | pub fn should_remove_if_empty(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TAG_CATALOG` is never used [INFO] [stdout] --> src/extractor/tags.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | pub static TAG_CATALOG: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `FORMAT_TAG_CATALOG` is never used [INFO] [stdout] --> src/extractor/tags.rs:182:12 [INFO] [stdout] | [INFO] [stdout] 182 | pub static FORMAT_TAG_CATALOG: LazyLock> = LazyLock::new(|| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_list_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:210:8 [INFO] [stdout] | [INFO] [stdout] 210 | pub fn is_xml_list_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_quote_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:217:8 [INFO] [stdout] | [INFO] [stdout] 217 | pub fn is_xml_quote_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_head_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:224:8 [INFO] [stdout] | [INFO] [stdout] 224 | pub fn is_xml_head_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_lb_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | pub fn is_xml_lb_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_hi_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:238:8 [INFO] [stdout] | [INFO] [stdout] 238 | pub fn is_xml_hi_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_ref_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:245:8 [INFO] [stdout] | [INFO] [stdout] 245 | pub fn is_xml_ref_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_graphic_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 252 | pub fn is_xml_graphic_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_item_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:259:8 [INFO] [stdout] | [INFO] [stdout] 259 | pub fn is_xml_item_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_xml_cell_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:266:8 [INFO] [stdout] | [INFO] [stdout] 266 | pub fn is_xml_cell_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_in_tag_catalog` is never used [INFO] [stdout] --> src/extractor/tags.rs:273:8 [INFO] [stdout] | [INFO] [stdout] 273 | pub fn is_in_tag_catalog(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_format_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:280:8 [INFO] [stdout] | [INFO] [stdout] 280 | pub fn is_format_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_tag` is never used [INFO] [stdout] --> src/extractor/tags.rs:287:8 [INFO] [stdout] | [INFO] [stdout] 287 | pub fn is_valid_tag(tag: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_metadata_light` is never used [INFO] [stdout] --> src/metadata/mod.rs:238:8 [INFO] [stdout] | [INFO] [stdout] 238 | pub fn extract_metadata_light(doc: &Document, opts: &Options) -> Metadata { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `types` and `parent` are never read [INFO] [stdout] --> src/metadata/json_ld.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct SchemaData { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 17 | /// Schema @type values [INFO] [stdout] 18 | pub types: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub parent: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SchemaData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_open_graph` is never used [INFO] [stdout] --> src/metadata/meta_tags.rs:216:8 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn extract_open_graph(doc: &Document, original: Metadata) -> Metadata { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_base_url` is never used [INFO] [stdout] --> src/url_utils.rs:107:8 [INFO] [stdout] | [INFO] [stdout] 107 | pub fn get_base_url(url_str: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_url` is never used [INFO] [stdout] --> src/url_utils.rs:175:8 [INFO] [stdout] | [INFO] [stdout] 175 | pub fn parse_url(url_str: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize_url` is never used [INFO] [stdout] --> src/url_utils.rs:186:8 [INFO] [stdout] | [INFO] [stdout] 186 | pub fn normalize_url(url_str: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `urls_match` is never used [INFO] [stdout] --> src/url_utils.rs:205:8 [INFO] [stdout] | [INFO] [stdout] 205 | pub fn urls_match(url1: &str, url2: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LinkDensityResult` is never constructed [INFO] [stdout] --> src/link_density.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct LinkDensityResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `link_density_test_with_info` is never used [INFO] [stdout] --> src/link_density.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 156 | pub fn link_density_test_with_info(element: &Selection, options: &Options) -> (bool, bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling criterion v0.5.1 [INFO] [stdout] warning: use of deprecated function `rs_trafilatura::markdown::post_process_markdown`: Use quick_html2md's built-in escape_special_chars option instead [INFO] [stdout] --> tests/spike_markdown_validation.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use rs_trafilatura::markdown::post_process_markdown; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `rs_trafilatura::markdown::post_process_markdown`: Use quick_html2md's built-in escape_special_chars option instead [INFO] [stdout] --> tests/spike_markdown_validation.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | post_process_markdown(&raw) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `md` [INFO] [stdout] --> tests/spike_markdown_validation.rs:159:13 [INFO] [stdout] | [INFO] [stdout] 159 | let md = to_markdown(html); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_md` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `md` [INFO] [stdout] --> tests/spike_markdown_validation.rs:166:13 [INFO] [stdout] | [INFO] [stdout] 166 | let md = to_markdown(html); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_md` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Document`, `extend`, `is_void_element`, and `tail_nodes` [INFO] [stdout] --> src/etree.rs:24:22 [INFO] [stdout] | [INFO] [stdout] 24 | append, element, extend, is_void_element, iter, iter_descendants, iter_text, remove, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] 25 | set_tail, set_text, strip, strip_elements, strip_tags, sub_element, tail, tail_nodes, text, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 26 | Document, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CleaningOptions` [INFO] [stdout] --> src/html_processing.rs:202:42 [INFO] [stdout] | [INFO] [stdout] 202 | use html_cleaning::{HtmlCleaner, CleaningOptions}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `comments::extract_comments` [INFO] [stdout] --> src/extractor/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | pub use comments::extract_comments; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `baseline`, `candidate_is_usable`, `compare_external_extraction`, and `extract_with_fallback` [INFO] [stdout] --> src/extractor/mod.rs:54:20 [INFO] [stdout] | [INFO] [stdout] 54 | pub use fallback::{baseline, candidate_is_usable, compare_external_extraction, extract_with_fallback}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pipeline::extract_content` [INFO] [stdout] --> src/extractor/mod.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | pub use pipeline::extract_content; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `state::ExtractionState` [INFO] [stdout] --> src/extractor/mod.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | pub use state::ExtractionState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `examine_title_element`, `extract_dom_author`, `extract_dom_categories`, `extract_dom_license`, `extract_dom_sitename`, `extract_dom_tags`, `extract_dom_title`, and `extract_dom_url` [INFO] [stdout] --> src/metadata/mod.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | examine_title_element, extract_dom_author, extract_dom_categories, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 17 | extract_dom_license, extract_dom_sitename, extract_dom_tags, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | extract_dom_title, extract_dom_url, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json_ld::extract_json_ld` [INFO] [stdout] --> src/metadata/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use json_ld::extract_json_ld; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `examine_meta`, `extract_open_graph`, and `validate_metadata_name` [INFO] [stdout] --> src/metadata/mod.rs:21:21 [INFO] [stdout] | [INFO] [stdout] 21 | pub use meta_tags::{examine_meta, extract_open_graph, validate_metadata_name}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `markdown::post_process_markdown`: Use quick_html2md's built-in escape_special_chars option instead [INFO] [stdout] --> src/markdown.rs:527:22 [INFO] [stdout] | [INFO] [stdout] 527 | let result = post_process_markdown(input); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `markdown::post_process_markdown`: Use quick_html2md's built-in escape_special_chars option instead [INFO] [stdout] --> src/markdown.rs:537:22 [INFO] [stdout] | [INFO] [stdout] 537 | let result = post_process_markdown(input); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `markdown::post_process_markdown`: Use quick_html2md's built-in escape_special_chars option instead [INFO] [stdout] --> src/markdown.rs:545:22 [INFO] [stdout] | [INFO] [stdout] 545 | let result = post_process_markdown(input); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `markdown::post_process_markdown`: Use quick_html2md's built-in escape_special_chars option instead [INFO] [stdout] --> src/markdown.rs:552:22 [INFO] [stdout] | [INFO] [stdout] 552 | let result = post_process_markdown(input); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `markdown::post_process_markdown`: Use quick_html2md's built-in escape_special_chars option instead [INFO] [stdout] --> src/markdown.rs:559:22 [INFO] [stdout] | [INFO] [stdout] 559 | let result = post_process_markdown(input); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `best_total_len` is never read [INFO] [stdout] --> src/extract.rs:593:17 [INFO] [stdout] | [INFO] [stdout] 553 | best_total_len = total; [INFO] [stdout] | ---------------------- `best_total_len` is overwritten here before the previous value is read [INFO] [stdout] ... [INFO] [stdout] 593 | best_total_len = total; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `longer` [INFO] [stdout] --> src/extract.rs:743:17 [INFO] [stdout] | [INFO] [stdout] 743 | let longer = c.text_len.max(existing.len()); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_longer` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `options` [INFO] [stdout] --> src/extract.rs:644:46 [INFO] [stdout] | [INFO] [stdout] 644 | fn try_multi_candidate_merge(doc: &Document, options: &Options) -> Option { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `block_tags` [INFO] [stdout] --> src/extract.rs:1938:9 [INFO] [stdout] | [INFO] [stdout] 1938 | let block_tags = ["div", "p", "pre", "section", "article", "table", [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_tags` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a_count` [INFO] [stdout] --> src/extract.rs:2212:9 [INFO] [stdout] | [INFO] [stdout] 2212 | let a_count: i64 = match i64::try_from(el.select("a").length()) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_links` is never read [INFO] [stdout] --> src/page_type/ml.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | current_links = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 268 | current_links = sel.select("a").length() as u32; [INFO] [stdout] | ----------------------------------------------- `current_links` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_text_len` is never read [INFO] [stdout] --> src/page_type/ml.rs:265:13 [INFO] [stdout] | [INFO] [stdout] 265 | current_text_len = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 270 | current_text_len = text.trim().len() as u32; [INFO] [stdout] | ------------------------------------------- `current_text_len` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `compute_extraction_quality_ml` is never used [INFO] [stdout] --> src/extract.rs:775:4 [INFO] [stdout] | [INFO] [stdout] 775 | fn compute_extraction_quality_ml( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `strip_link_dense_sections` is never used [INFO] [stdout] --> src/extract.rs:1150:4 [INFO] [stdout] | [INFO] [stdout] 1150 | fn strip_link_dense_sections(html: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `lenient_boilerplate` and `min_paragraph_density` are never read [INFO] [stdout] --> src/page_type/mod.rs:110:9 [INFO] [stdout] | [INFO] [stdout] 99 | pub(crate) struct ExtractionProfile { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 110 | pub lenient_boilerplate: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub min_paragraph_density: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExtractionProfile` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SERVICE_BOILERPLATE_SELECTORS` is never used [INFO] [stdout] --> src/page_type/mod.rs:1052:7 [INFO] [stdout] | [INFO] [stdout] 1052 | const SERVICE_BOILERPLATE_SELECTORS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_comments` is never used [INFO] [stdout] --> src/dom.rs:326:8 [INFO] [stdout] | [INFO] [stdout] 326 | pub fn remove_comments(_doc: &Document) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `PRECISION_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/discard.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 285 | pub static PRECISION_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `precision_discard_rule_1` is never used [INFO] [stdout] --> src/selector/discard.rs:293:8 [INFO] [stdout] | [INFO] [stdout] 293 | pub fn precision_discard_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `TEASER_DISCARDED_CONTENT` is never used [INFO] [stdout] --> src/selector/discard.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 309 | pub static TEASER_DISCARDED_CONTENT: &[Rule] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `teaser_rule_1` is never used [INFO] [stdout] --> src/selector/discard.rs:317:8 [INFO] [stdout] | [INFO] [stdout] 317 | pub fn teaser_rule_1(sel: &Selection) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_clean_selector` is never used [INFO] [stdout] --> src/html_processing.rs:268:4 [INFO] [stdout] | [INFO] [stdout] 268 | fn build_clean_selector(opts: &Options) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_strip_selector` is never used [INFO] [stdout] --> src/html_processing.rs:308:4 [INFO] [stdout] | [INFO] [stdout] 308 | fn build_strip_selector(opts: &Options) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prune_unwanted_nodes` is never used [INFO] [stdout] --> src/html_processing.rs:914:8 [INFO] [stdout] | [INFO] [stdout] 914 | pub fn prune_unwanted_nodes( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_with_fallback` is never used [INFO] [stdout] --> src/extractor/fallback.rs:604:8 [INFO] [stdout] | [INFO] [stdout] 604 | pub fn extract_with_fallback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `types` and `parent` are never read [INFO] [stdout] --> src/metadata/json_ld.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct SchemaData { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 17 | /// Schema @type values [INFO] [stdout] 18 | pub types: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub parent: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SchemaData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_open_graph` is never used [INFO] [stdout] --> src/metadata/meta_tags.rs:216:8 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn extract_open_graph(doc: &Document, original: Metadata) -> Metadata { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LinkDensityResult` is never constructed [INFO] [stdout] --> src/link_density.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct LinkDensityResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `rs-trafilatura` (lib test); 37 warnings emitted [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/beta-2026-04-21-x86_64-unknown-linux-gnu/bin/rustc --crate-name rs_trafilatura --edition=2021 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 '--warn=clippy::pedantic' '--warn=clippy::all' '--deny=clippy::unwrap_used' --forbid=unsafe_code '--allow=clippy::too_many_lines' '--allow=clippy::similar_names' '--allow=clippy::needless_raw_string_hashes' '--allow=clippy::missing_panics_doc' '--allow=clippy::missing_errors_doc' '--allow=clippy::items_after_statements' '--allow=clippy::float_cmp' '--deny=clippy::expect_used' '--allow=clippy::doc_markdown' '--allow=clippy::cast_precision_loss' --test --cfg 'feature="default"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("default", "spider"))' -C metadata=8c727bef13034a33 -C extra-filename=-e4a853a79008f454 --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern chrono=/opt/rustwide/target/debug/deps/libchrono-fe29f46e26680be9.rlib --extern criterion=/opt/rustwide/target/debug/deps/libcriterion-7b5e02dca57b01da.rlib --extern dom_query=/opt/rustwide/target/debug/deps/libdom_query-3fca3444f57983c2.rlib --extern encoding_rs=/opt/rustwide/target/debug/deps/libencoding_rs-8656bb43f7a59443.rlib --extern html_cleaning=/opt/rustwide/target/debug/deps/libhtml_cleaning-42408c12bd2c79a9.rlib --extern quick_html2md=/opt/rustwide/target/debug/deps/libquick_html2md-5f69de6953e89b06.rlib --extern regex=/opt/rustwide/target/debug/deps/libregex-4d7042c3ca83d67c.rlib --extern serde=/opt/rustwide/target/debug/deps/libserde-40e793a91a47a061.rlib --extern serde_json=/opt/rustwide/target/debug/deps/libserde_json-f23c31b73daf454f.rlib --extern tendril=/opt/rustwide/target/debug/deps/libtendril-9907bb1596fa0818.rlib --extern thiserror=/opt/rustwide/target/debug/deps/libthiserror-1bc3e35980d8482d.rlib --extern url=/opt/rustwide/target/debug/deps/liburl-0c76a0003ead6060.rlib --extern web_page_classifier=/opt/rustwide/target/debug/deps/libweb_page_classifier-c2a29cf974f15f45.rlib --cap-lints=warn` (signal: 9, SIGKILL: kill) [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] running `Command { std: "docker" "inspect" "6e5ce5c2497e88095eb80b1baffafeb88d7f52a55e14cebb116b1ae273db75fd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6e5ce5c2497e88095eb80b1baffafeb88d7f52a55e14cebb116b1ae273db75fd", kill_on_drop: false }` [INFO] [stdout] 6e5ce5c2497e88095eb80b1baffafeb88d7f52a55e14cebb116b1ae273db75fd