[INFO] crate pdf-extract 0.4.6 is already in cache [INFO] extracting crate pdf-extract 0.4.6 into work/ex/clippy-test-run/sources/stable/reg/pdf-extract/0.4.6 [INFO] extracting crate pdf-extract 0.4.6 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pdf-extract/0.4.6 [INFO] validating manifest of pdf-extract-0.4.6 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of pdf-extract-0.4.6 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing pdf-extract-0.4.6 [INFO] finished frobbing pdf-extract-0.4.6 [INFO] frobbed toml for pdf-extract-0.4.6 written to work/ex/clippy-test-run/sources/stable/reg/pdf-extract/0.4.6/Cargo.toml [INFO] started frobbing pdf-extract-0.4.6 [INFO] finished frobbing pdf-extract-0.4.6 [INFO] frobbed toml for pdf-extract-0.4.6 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pdf-extract/0.4.6/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting pdf-extract-0.4.6 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/pdf-extract/0.4.6:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 43a5a87cebdd775bacaca0f847256d3aa811fd71351bfb67e67c85c66b63db36 [INFO] running `"docker" "start" "-a" "43a5a87cebdd775bacaca0f847256d3aa811fd71351bfb67e67c85c66b63db36"` [INFO] [stderr] Checking postscript v0.11.1 [INFO] [stderr] Checking type1-encoding-parser v0.1.0 [INFO] [stderr] Checking adobe-cmap-parser v0.3.3 [INFO] [stderr] Checking euclid v0.15.6 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking lopdf v0.15.3 [INFO] [stderr] Checking pdf-extract v0.4.6 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/lib.rs:189:33 [INFO] [stderr] | [INFO] [stderr] 189 | (Some(a), Some(b), Some(c), Some(d), None) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/lib.rs:189:42 [INFO] [stderr] | [INFO] [stderr] 189 | (Some(a), Some(b), Some(c), Some(d), None) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:563:123 [INFO] [stderr] | [INFO] [stderr] 563 | maybe_get_obj(self.doc, self.font, "FontDescriptor").and_then(|desc| desc.as_dict()).map(|desc| PdfFontDescriptor{desc: desc, doc: self.doc}) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `desc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1650:9 [INFO] [stderr] | [INFO] [stderr] 1650 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1666:9 [INFO] [stderr] | [INFO] [stderr] 1666 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1670:9 [INFO] [stderr] | [INFO] [stderr] 1670 | / write!(self.file, "\n", [INFO] [stderr] 1671 | | ctm.m11, [INFO] [stderr] 1672 | | ctm.m12, [INFO] [stderr] 1673 | | ctm.m21, [INFO] [stderr] ... | [INFO] [stderr] 1676 | | ctm.m32, [INFO] [stderr] 1677 | | ); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1680:9 [INFO] [stderr] | [INFO] [stderr] 1680 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1724:9 [INFO] [stderr] | [INFO] [stderr] 1724 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1796:17 [INFO] [stderr] | [INFO] [stderr] 1796 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1801:17 [INFO] [stderr] | [INFO] [stderr] 1801 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/lib.rs:189:33 [INFO] [stderr] | [INFO] [stderr] 189 | (Some(a), Some(b), Some(c), Some(d), None) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/lib.rs:189:42 [INFO] [stderr] | [INFO] [stderr] 189 | (Some(a), Some(b), Some(c), Some(d), None) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:563:123 [INFO] [stderr] | [INFO] [stderr] 563 | maybe_get_obj(self.doc, self.font, "FontDescriptor").and_then(|desc| desc.as_dict()).map(|desc| PdfFontDescriptor{desc: desc, doc: self.doc}) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `desc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1650:9 [INFO] [stderr] | [INFO] [stderr] 1650 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1666:9 [INFO] [stderr] | [INFO] [stderr] 1666 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1670:9 [INFO] [stderr] | [INFO] [stderr] 1670 | / write!(self.file, "\n", [INFO] [stderr] 1671 | | ctm.m11, [INFO] [stderr] 1672 | | ctm.m12, [INFO] [stderr] 1673 | | ctm.m21, [INFO] [stderr] ... | [INFO] [stderr] 1676 | | ctm.m32, [INFO] [stderr] 1677 | | ); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1680:9 [INFO] [stderr] | [INFO] [stderr] 1680 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1724:9 [INFO] [stderr] | [INFO] [stderr] 1724 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1796:17 [INFO] [stderr] | [INFO] [stderr] 1796 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/lib.rs:1801:17 [INFO] [stderr] | [INFO] [stderr] 1801 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:76:24 [INFO] [stderr] | [INFO] [stderr] 76 | const PDFDocEncoding: &'static [u16] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | return UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:114:9 [INFO] [stderr] | [INFO] [stderr] 114 | return UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | return UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | return UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:335:5 [INFO] [stderr] | [INFO] [stderr] 335 | encoding_table [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:332:26 [INFO] [stderr] | [INFO] [stderr] 332 | let encoding_table = encoding.iter() [INFO] [stderr] | __________________________^ [INFO] [stderr] 333 | | .map(|x| if let &Some(x) = x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] 334 | | .collect(); [INFO] [stderr] | |__________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:711:9 [INFO] [stderr] | [INFO] [stderr] 711 | s [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:710:17 [INFO] [stderr] | [INFO] [stderr] 710 | let s = to_utf8(encoding, &slice); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:753:9 [INFO] [stderr] | [INFO] [stderr] 753 | s [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:752:17 [INFO] [stderr] | [INFO] [stderr] 752 | let s = to_utf8(encoding, &slice); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Type` [INFO] [stderr] --> src/lib.rs:993:1 [INFO] [stderr] | [INFO] [stderr] 993 | / enum Function { [INFO] [stderr] 994 | | Type0(Type0Func), [INFO] [stderr] 995 | | Type2(Type2Func), [INFO] [stderr] 996 | | Type3, [INFO] [stderr] 997 | | Type4 [INFO] [stderr] 998 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:1042:9 [INFO] [stderr] | [INFO] [stderr] 1042 | f [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:1008:17 [INFO] [stderr] | [INFO] [stderr] 1008 | let f = match function_type { [INFO] [stderr] | _________________^ [INFO] [stderr] 1009 | | 0 => { [INFO] [stderr] 1010 | | let stream = match obj { [INFO] [stderr] 1011 | | &Object::Stream(ref stream) => stream, [INFO] [stderr] ... | [INFO] [stderr] 1040 | | _ => { panic!("unhandled function type {}", function_type) } [INFO] [stderr] 1041 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1780:62 [INFO] [stderr] | [INFO] [stderr] 1780 | PlainTextOutput{ writer: writer.convert(), last_end: 100000., first_char: false, last_y: 0.} [INFO] [stderr] | ^^^^^^^ help: consider: `100_000.` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:1848:5 [INFO] [stderr] | [INFO] [stderr] 1848 | return Ok(s); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:76:24 [INFO] [stderr] | [INFO] [stderr] 76 | const PDFDocEncoding: &'static [u16] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | return UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:114:9 [INFO] [stderr] | [INFO] [stderr] 114 | return UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | return UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&s[2..], DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | return UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `UTF_16BE.decode(&r, DecoderTrap::Strict).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:335:5 [INFO] [stderr] | [INFO] [stderr] 335 | encoding_table [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:332:26 [INFO] [stderr] | [INFO] [stderr] 332 | let encoding_table = encoding.iter() [INFO] [stderr] | __________________________^ [INFO] [stderr] 333 | | .map(|x| if let &Some(x) = x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] 334 | | .collect(); [INFO] [stderr] | |__________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:711:9 [INFO] [stderr] | [INFO] [stderr] 711 | s [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:710:17 [INFO] [stderr] | [INFO] [stderr] 710 | let s = to_utf8(encoding, &slice); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:753:9 [INFO] [stderr] | [INFO] [stderr] 753 | s [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:752:17 [INFO] [stderr] | [INFO] [stderr] 752 | let s = to_utf8(encoding, &slice); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Type` [INFO] [stderr] --> src/lib.rs:993:1 [INFO] [stderr] | [INFO] [stderr] 993 | / enum Function { [INFO] [stderr] 994 | | Type0(Type0Func), [INFO] [stderr] 995 | | Type2(Type2Func), [INFO] [stderr] 996 | | Type3, [INFO] [stderr] 997 | | Type4 [INFO] [stderr] 998 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:1042:9 [INFO] [stderr] | [INFO] [stderr] 1042 | f [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:1008:17 [INFO] [stderr] | [INFO] [stderr] 1008 | let f = match function_type { [INFO] [stderr] | _________________^ [INFO] [stderr] 1009 | | 0 => { [INFO] [stderr] 1010 | | let stream = match obj { [INFO] [stderr] 1011 | | &Object::Stream(ref stream) => stream, [INFO] [stderr] ... | [INFO] [stderr] 1040 | | _ => { panic!("unhandled function type {}", function_type) } [INFO] [stderr] 1041 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1780:62 [INFO] [stderr] | [INFO] [stderr] 1780 | PlainTextOutput{ writer: writer.convert(), last_end: 100000., first_char: false, last_y: 0.} [INFO] [stderr] | ^^^^^^^ help: consider: `100_000.` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:1848:5 [INFO] [stderr] | [INFO] [stderr] 1848 | return Ok(s); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Write` [INFO] [stderr] --> src/lib.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::io::Write; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/lib.rs:1578:17 [INFO] [stderr] | [INFO] [stderr] 1578 | "n" => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `code` [INFO] [stderr] --> src/glyphnames.rs:4698:60 [INFO] [stderr] | [INFO] [stderr] 4698 | let result = names.binary_search_by_key(&name, |&(name,code)| &name); [INFO] [stderr] | ^^^^ help: consider using `_code` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `code` [INFO] [stderr] --> src/zapfglyphnames.rs:208:60 [INFO] [stderr] | [INFO] [stderr] 208 | let result = names.binary_search_by_key(&name, |&(name,code)| &name); [INFO] [stderr] | ^^^^ help: consider using `_code` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x_max` [INFO] [stderr] --> src/lib.rs:966:36 [INFO] [stderr] | [INFO] [stderr] 966 | fn interpolate(x: f64, x_min: f64, x_max: f64, y_min: f64, y_max: f64) -> f64 { [INFO] [stderr] | ^^^^^ help: consider using `_x_max` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tsm` [INFO] [stderr] --> src/lib.rs:1101:13 [INFO] [stderr] | [INFO] [stderr] 1101 | let tsm = Transform2D::row_major(ts.font_size * ts.horizontal_scaling, [INFO] [stderr] | ^^^ help: consider using `_tsm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `trm` [INFO] [stderr] --> src/lib.rs:1133:13 [INFO] [stderr] | [INFO] [stderr] 1133 | let trm = ts.tm.pre_mul(&gs.ctm); [INFO] [stderr] | ^^^ help: consider using `_trm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tlm` [INFO] [stderr] --> src/lib.rs:1089:14 [INFO] [stderr] | [INFO] [stderr] 1089 | tlm: &Transform2D, [INFO] [stderr] | ^^^ help: consider using `_tlm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctm` [INFO] [stderr] --> src/lib.rs:1603:26 [INFO] [stderr] | [INFO] [stderr] 1603 | fn stroke(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^ help: consider using `_ctm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `colorspace` [INFO] [stderr] --> src/lib.rs:1603:50 [INFO] [stderr] | [INFO] [stderr] 1603 | fn stroke(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_colorspace` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `color` [INFO] [stderr] --> src/lib.rs:1603:75 [INFO] [stderr] | [INFO] [stderr] 1603 | fn stroke(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^ help: consider using `_color` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctm` [INFO] [stderr] --> src/lib.rs:1604:24 [INFO] [stderr] | [INFO] [stderr] 1604 | fn fill(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^ help: consider using `_ctm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `colorspace` [INFO] [stderr] --> src/lib.rs:1604:48 [INFO] [stderr] | [INFO] [stderr] 1604 | fn fill(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_colorspace` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `color` [INFO] [stderr] --> src/lib.rs:1604:73 [INFO] [stderr] | [INFO] [stderr] 1604 | fn fill(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^ help: consider using `_color` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/lib.rs:164:65 [INFO] [stderr] | [INFO] [stderr] 164 | fn from_opt_obj(doc: &'a Document, obj: Option<&'a Object>, key: &str) -> Self { [INFO] [stderr] | ^^^ help: consider using `_key` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `doc` [INFO] [stderr] --> src/lib.rs:219:17 [INFO] [stderr] | [INFO] [stderr] 219 | fn from_obj(doc: &Document, obj: &Object) -> Option { [INFO] [stderr] | ^^^ help: consider using `_doc` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `doc` [INFO] [stderr] --> src/lib.rs:229:17 [INFO] [stderr] | [INFO] [stderr] 229 | fn from_obj(doc: &Document, obj: &Object) -> Option { [INFO] [stderr] | ^^^ help: consider using `_doc` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `charset` [INFO] [stderr] --> src/lib.rs:387:17 [INFO] [stderr] | [INFO] [stderr] 387 | let charset = match charset { [INFO] [stderr] | ^^^^^^^ help: consider using `_charset` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `encoding_table` is never read [INFO] [stderr] --> src/lib.rs:575:17 [INFO] [stderr] | [INFO] [stderr] 575 | let mut encoding_table = None; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `f` [INFO] [stderr] --> src/lib.rs:854:13 [INFO] [stderr] | [INFO] [stderr] 854 | let f = font_dict.as_dict().expect("must be dict"); [INFO] [stderr] | ^ help: consider using `_f` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n_inputs` [INFO] [stderr] --> src/lib.rs:979:13 [INFO] [stderr] | [INFO] [stderr] 979 | let n_inputs = self.domain.len() / 2; [INFO] [stderr] | ^^^^^^^^ help: consider using `_n_inputs` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n_ouputs` [INFO] [stderr] --> src/lib.rs:980:13 [INFO] [stderr] | [INFO] [stderr] 980 | let n_ouputs = self.range.len() / 2; [INFO] [stderr] | ^^^^^^^^ help: consider using `_n_ouputs` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `input` [INFO] [stderr] --> src/lib.rs:978:20 [INFO] [stderr] | [INFO] [stderr] 978 | fn eval(&self, input: &[f64], output: &mut [f64]) { [INFO] [stderr] | ^^^^^ help: consider using `_input` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output` [INFO] [stderr] --> src/lib.rs:978:35 [INFO] [stderr] | [INFO] [stderr] 978 | fn eval(&self, input: &[f64], output: &mut [f64]) { [INFO] [stderr] | ^^^^^^ help: consider using `_output` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `page_num` [INFO] [stderr] --> src/lib.rs:1310:144 [INFO] [stderr] | [INFO] [stderr] 1310 | fn process_stream(&mut self, doc: &'a Document, content: Vec, resources: &'a Dictionary, media_box: &MediaBox, output: &mut OutputDev, page_num: u32) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_page_num` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `width` [INFO] [stderr] --> src/lib.rs:1629:52 [INFO] [stderr] | [INFO] [stderr] 1629 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^^ help: consider using `_width` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `page_num` [INFO] [stderr] --> src/lib.rs:1648:30 [INFO] [stderr] | [INFO] [stderr] 1648 | fn begin_page(&mut self, page_num: u32, media_box: &MediaBox, art_box: Option<(f64, f64, f64, f64)>) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_page_num` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/lib.rs:1683:36 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `y` [INFO] [stderr] --> src/lib.rs:1683:44 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^ help: consider using `_y` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `width` [INFO] [stderr] --> src/lib.rs:1683:52 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^^ help: consider using `_width` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `font_size` [INFO] [stderr] --> src/lib.rs:1683:64 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_font_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `char` [INFO] [stderr] --> src/lib.rs:1683:80 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^ help: consider using `_char` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `page_num` [INFO] [stderr] --> src/lib.rs:1787:30 [INFO] [stderr] | [INFO] [stderr] 1787 | fn begin_page(&mut self, page_num: u32, media_box: &MediaBox, _: Option) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_page_num` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `media_box` [INFO] [stderr] --> src/lib.rs:1787:45 [INFO] [stderr] | [INFO] [stderr] 1787 | fn begin_page(&mut self, page_num: u32, media_box: &MediaBox, _: Option) { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_media_box` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:525:17 [INFO] [stderr] | [INFO] [stderr] 525 | let mut first_char: i64 = get(doc, font, "FirstChar"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:526:17 [INFO] [stderr] | [INFO] [stderr] 526 | let mut last_char: i64 = get(doc, font, "LastChar"); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:527:17 [INFO] [stderr] | [INFO] [stderr] 527 | let mut widths: Vec = get(doc, font, "Widths"); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:622:13 [INFO] [stderr] | [INFO] [stderr] 622 | let mut first_char: i64 = get(doc, font, "FirstChar"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:623:13 [INFO] [stderr] | [INFO] [stderr] 623 | let mut last_char: i64 = get(doc, font, "LastChar"); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:624:13 [INFO] [stderr] | [INFO] [stderr] 624 | let mut widths: Vec = get(doc, font, "Widths"); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:1337:13 [INFO] [stderr] | [INFO] [stderr] 1337 | let mut flip_ctm = Transform2D::row_major(1., 0., 0., -1., 0., media_box.ury - media_box.lly); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:1669:13 [INFO] [stderr] | [INFO] [stderr] 1669 | let mut ctm = Mat::create_scale(1., -1.).post_translate(vec2(0., media_box.ury)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `STANDARD_ENCODING` [INFO] [stderr] --> src/encodings.rs:775:1 [INFO] [stderr] | [INFO] [stderr] 775 | / pub const STANDARD_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 776 | | None, [INFO] [stderr] 777 | | None, [INFO] [stderr] 778 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1031 | | None [INFO] [stderr] 1032 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EXPERT_ENCODING` [INFO] [stderr] --> src/encodings.rs:1034:1 [INFO] [stderr] | [INFO] [stderr] 1034 | / pub const EXPERT_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 1035 | | None, [INFO] [stderr] 1036 | | None, [INFO] [stderr] 1037 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1289 | | Some("Thornsmall"), [INFO] [stderr] 1290 | | Some("Ydieresissmall")]; [INFO] [stderr] | |__________________________^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `SYMBOL_ENCODING` [INFO] [stderr] --> src/encodings.rs:1292:1 [INFO] [stderr] | [INFO] [stderr] 1292 | / pub const SYMBOL_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 1293 | | None, [INFO] [stderr] 1294 | | None, [INFO] [stderr] 1295 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1547 | | Some("bracerightbt"), [INFO] [stderr] 1548 | | None]; [INFO] [stderr] | |________^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ZAPFDINGBATS_ENCODING` [INFO] [stderr] --> src/encodings.rs:1550:1 [INFO] [stderr] | [INFO] [stderr] 1550 | / pub const ZAPFDINGBATS_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 1551 | | None, [INFO] [stderr] 1552 | | None, [INFO] [stderr] 1553 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1805 | | Some("a191"), [INFO] [stderr] 1806 | | None]; [INFO] [stderr] | |________^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_type` [INFO] [stderr] --> src/lib.rs:131:1 [INFO] [stderr] | [INFO] [stderr] 131 | fn get_type(o: &Dictionary) -> &str [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `to_array4` [INFO] [stderr] --> src/lib.rs:185:1 [INFO] [stderr] | [INFO] [stderr] 185 | fn to_array4(v: Vec) -> Option<[T; 4]> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_name` [INFO] [stderr] --> src/lib.rs:257:1 [INFO] [stderr] | [INFO] [stderr] 257 | fn get_name<'a>(doc: &'a Document, dict: &'a Dictionary, key: &str) -> &'a [u8] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `maybe_get_name_string` [INFO] [stderr] --> src/lib.rs:261:1 [INFO] [stderr] | [INFO] [stderr] 261 | fn maybe_get_name_string<'a>(doc: &'a Document, dict: &'a Dictionary, key: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_encoding` [INFO] [stderr] --> src/lib.rs:541:5 [INFO] [stderr] | [INFO] [stderr] 541 | fn get_encoding(&self) -> &'a Object { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_type` [INFO] [stderr] --> src/lib.rs:544:5 [INFO] [stderr] | [INFO] [stderr] 544 | fn get_type(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_basefont` [INFO] [stderr] --> src/lib.rs:547:5 [INFO] [stderr] | [INFO] [stderr] 547 | fn get_basefont(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_subtype` [INFO] [stderr] --> src/lib.rs:550:5 [INFO] [stderr] | [INFO] [stderr] 550 | fn get_subtype(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_widths` [INFO] [stderr] --> src/lib.rs:553:5 [INFO] [stderr] | [INFO] [stderr] 553 | fn get_widths(&self) -> Option<&Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_name` [INFO] [stderr] --> src/lib.rs:558:5 [INFO] [stderr] | [INFO] [stderr] 558 | fn get_name(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_descriptor` [INFO] [stderr] --> src/lib.rs:562:5 [INFO] [stderr] | [INFO] [stderr] 562 | fn get_descriptor(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `CID` [INFO] [stderr] --> src/lib.rs:641:1 [INFO] [stderr] | [INFO] [stderr] 641 | type CID = u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `doc` [INFO] [stderr] --> src/lib.rs:767:5 [INFO] [stderr] | [INFO] [stderr] 767 | doc: &'a Document, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `encoding` [INFO] [stderr] --> src/lib.rs:768:5 [INFO] [stderr] | [INFO] [stderr] 768 | encoding: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `doc` [INFO] [stderr] --> src/lib.rs:937:5 [INFO] [stderr] | [INFO] [stderr] 937 | doc: &'a Document [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_file` [INFO] [stderr] --> src/lib.rs:941:5 [INFO] [stderr] | [INFO] [stderr] 941 | fn get_file(&self) -> Option<&'a Object> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_name` [INFO] [stderr] --> src/lib.rs:944:5 [INFO] [stderr] | [INFO] [stderr] 944 | fn get_name(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `interpolate` [INFO] [stderr] --> src/lib.rs:966:1 [INFO] [stderr] | [INFO] [stderr] 966 | fn interpolate(x: f64, x_min: f64, x_max: f64, y_min: f64, y_max: f64) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `eval` [INFO] [stderr] --> src/lib.rs:978:5 [INFO] [stderr] | [INFO] [stderr] 978 | fn eval(&self, input: &[f64], output: &mut [f64]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Type3` [INFO] [stderr] --> src/lib.rs:996:5 [INFO] [stderr] | [INFO] [stderr] 996 | Type3, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Type4` [INFO] [stderr] --> src/lib.rs:997:5 [INFO] [stderr] | [INFO] [stderr] 997 | Type4 [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/core_fonts.rs:2:21 [INFO] [stderr] | [INFO] [stderr] 2 | pub fn metrics() -> Box<[(&'static str, &'static str, &'static [(i64, f64, &'static str)])]> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u16 [INFO] [stderr] --> src/glyphnames.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | ("Digamma", 0x1d7cb), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(overflowing_literals)] on by default [INFO] [stderr] = note: the literal `0x1d7cb` (decimal `120779`) does not fit into an `u16` and will become `55243u16` [INFO] [stderr] = help: consider using `u32` instead [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Write` [INFO] [stderr] --> src/lib.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::io::Write; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/lib.rs:1578:17 [INFO] [stderr] | [INFO] [stderr] 1578 | "n" => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `code` [INFO] [stderr] --> src/glyphnames.rs:4698:60 [INFO] [stderr] | [INFO] [stderr] 4698 | let result = names.binary_search_by_key(&name, |&(name,code)| &name); [INFO] [stderr] | ^^^^ help: consider using `_code` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `code` [INFO] [stderr] --> src/zapfglyphnames.rs:208:60 [INFO] [stderr] | [INFO] [stderr] 208 | let result = names.binary_search_by_key(&name, |&(name,code)| &name); [INFO] [stderr] | ^^^^ help: consider using `_code` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x_max` [INFO] [stderr] --> src/lib.rs:966:36 [INFO] [stderr] | [INFO] [stderr] 966 | fn interpolate(x: f64, x_min: f64, x_max: f64, y_min: f64, y_max: f64) -> f64 { [INFO] [stderr] | ^^^^^ help: consider using `_x_max` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tsm` [INFO] [stderr] --> src/lib.rs:1101:13 [INFO] [stderr] | [INFO] [stderr] 1101 | let tsm = Transform2D::row_major(ts.font_size * ts.horizontal_scaling, [INFO] [stderr] | ^^^ help: consider using `_tsm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `trm` [INFO] [stderr] --> src/lib.rs:1133:13 [INFO] [stderr] | [INFO] [stderr] 1133 | let trm = ts.tm.pre_mul(&gs.ctm); [INFO] [stderr] | ^^^ help: consider using `_trm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tlm` [INFO] [stderr] --> src/lib.rs:1089:14 [INFO] [stderr] | [INFO] [stderr] 1089 | tlm: &Transform2D, [INFO] [stderr] | ^^^ help: consider using `_tlm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctm` [INFO] [stderr] --> src/lib.rs:1603:26 [INFO] [stderr] | [INFO] [stderr] 1603 | fn stroke(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^ help: consider using `_ctm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `colorspace` [INFO] [stderr] --> src/lib.rs:1603:50 [INFO] [stderr] | [INFO] [stderr] 1603 | fn stroke(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_colorspace` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `color` [INFO] [stderr] --> src/lib.rs:1603:75 [INFO] [stderr] | [INFO] [stderr] 1603 | fn stroke(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^ help: consider using `_color` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctm` [INFO] [stderr] --> src/lib.rs:1604:24 [INFO] [stderr] | [INFO] [stderr] 1604 | fn fill(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^ help: consider using `_ctm` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `colorspace` [INFO] [stderr] --> src/lib.rs:1604:48 [INFO] [stderr] | [INFO] [stderr] 1604 | fn fill(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_colorspace` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `color` [INFO] [stderr] --> src/lib.rs:1604:73 [INFO] [stderr] | [INFO] [stderr] 1604 | fn fill(&mut self, ctm: &Transform2D, colorspace: &ColorSpace, color: &[f64], &Path) {} [INFO] [stderr] | ^^^^^ help: consider using `_color` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/lib.rs:164:65 [INFO] [stderr] | [INFO] [stderr] 164 | fn from_opt_obj(doc: &'a Document, obj: Option<&'a Object>, key: &str) -> Self { [INFO] [stderr] | ^^^ help: consider using `_key` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `doc` [INFO] [stderr] --> src/lib.rs:219:17 [INFO] [stderr] | [INFO] [stderr] 219 | fn from_obj(doc: &Document, obj: &Object) -> Option { [INFO] [stderr] | ^^^ help: consider using `_doc` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `doc` [INFO] [stderr] --> src/lib.rs:229:17 [INFO] [stderr] | [INFO] [stderr] 229 | fn from_obj(doc: &Document, obj: &Object) -> Option { [INFO] [stderr] | ^^^ help: consider using `_doc` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `charset` [INFO] [stderr] --> src/lib.rs:387:17 [INFO] [stderr] | [INFO] [stderr] 387 | let charset = match charset { [INFO] [stderr] | ^^^^^^^ help: consider using `_charset` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `encoding_table` is never read [INFO] [stderr] --> src/lib.rs:575:17 [INFO] [stderr] | [INFO] [stderr] 575 | let mut encoding_table = None; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `f` [INFO] [stderr] --> src/lib.rs:854:13 [INFO] [stderr] | [INFO] [stderr] 854 | let f = font_dict.as_dict().expect("must be dict"); [INFO] [stderr] | ^ help: consider using `_f` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n_inputs` [INFO] [stderr] --> src/lib.rs:979:13 [INFO] [stderr] | [INFO] [stderr] 979 | let n_inputs = self.domain.len() / 2; [INFO] [stderr] | ^^^^^^^^ help: consider using `_n_inputs` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n_ouputs` [INFO] [stderr] --> src/lib.rs:980:13 [INFO] [stderr] | [INFO] [stderr] 980 | let n_ouputs = self.range.len() / 2; [INFO] [stderr] | ^^^^^^^^ help: consider using `_n_ouputs` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `input` [INFO] [stderr] --> src/lib.rs:978:20 [INFO] [stderr] | [INFO] [stderr] 978 | fn eval(&self, input: &[f64], output: &mut [f64]) { [INFO] [stderr] | ^^^^^ help: consider using `_input` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output` [INFO] [stderr] --> src/lib.rs:978:35 [INFO] [stderr] | [INFO] [stderr] 978 | fn eval(&self, input: &[f64], output: &mut [f64]) { [INFO] [stderr] | ^^^^^^ help: consider using `_output` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `page_num` [INFO] [stderr] --> src/lib.rs:1310:144 [INFO] [stderr] | [INFO] [stderr] 1310 | fn process_stream(&mut self, doc: &'a Document, content: Vec, resources: &'a Dictionary, media_box: &MediaBox, output: &mut OutputDev, page_num: u32) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_page_num` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `width` [INFO] [stderr] --> src/lib.rs:1629:52 [INFO] [stderr] | [INFO] [stderr] 1629 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^^ help: consider using `_width` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `page_num` [INFO] [stderr] --> src/lib.rs:1648:30 [INFO] [stderr] | [INFO] [stderr] 1648 | fn begin_page(&mut self, page_num: u32, media_box: &MediaBox, art_box: Option<(f64, f64, f64, f64)>) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_page_num` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/lib.rs:1683:36 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `y` [INFO] [stderr] --> src/lib.rs:1683:44 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^ help: consider using `_y` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `width` [INFO] [stderr] --> src/lib.rs:1683:52 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^^ help: consider using `_width` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `font_size` [INFO] [stderr] --> src/lib.rs:1683:64 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_font_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `char` [INFO] [stderr] --> src/lib.rs:1683:80 [INFO] [stderr] | [INFO] [stderr] 1683 | fn output_character(&mut self, x: f64, y: f64, width: f64, font_size: f64, char: &str) { [INFO] [stderr] | ^^^^ help: consider using `_char` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `page_num` [INFO] [stderr] --> src/lib.rs:1787:30 [INFO] [stderr] | [INFO] [stderr] 1787 | fn begin_page(&mut self, page_num: u32, media_box: &MediaBox, _: Option) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_page_num` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `media_box` [INFO] [stderr] --> src/lib.rs:1787:45 [INFO] [stderr] | [INFO] [stderr] 1787 | fn begin_page(&mut self, page_num: u32, media_box: &MediaBox, _: Option) { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_media_box` instead [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / match doc.trailer.get("Info") { [INFO] [stderr] 36 | | Some(&Object::Reference(ref id)) => { [INFO] [stderr] 37 | | match doc.get_object(*id) { [INFO] [stderr] 38 | | Some(&Object::Dictionary(ref info)) => { return Some(info); } [INFO] [stderr] ... | [INFO] [stderr] 42 | | _ => {} [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 35 | if let Some(&Object::Reference(ref id)) = doc.trailer.get("Info") { [INFO] [stderr] 36 | match doc.get_object(*id) { [INFO] [stderr] 37 | Some(&Object::Dictionary(ref info)) => { return Some(info); } [INFO] [stderr] 38 | _ => {} [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | / match doc.get_object(*id) { [INFO] [stderr] 38 | | Some(&Object::Dictionary(ref info)) => { return Some(info); } [INFO] [stderr] 39 | | _ => {} [INFO] [stderr] 40 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(&Object::Dictionary(ref info)) = doc.get_object(*id) { return Some(info); }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / match doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | | &Object::Reference(ref id) => { [INFO] [stderr] 50 | | match doc.get_object(*id) { [INFO] [stderr] 51 | | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] ... | [INFO] [stderr] 55 | | _ => {} [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 48 | if let &Object::Reference(ref id) = doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | match doc.get_object(*id) { [INFO] [stderr] 50 | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] 51 | _ => {} [INFO] [stderr] 52 | } [INFO] [stderr] 53 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / match doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | | &Object::Reference(ref id) => { [INFO] [stderr] 50 | | match doc.get_object(*id) { [INFO] [stderr] 51 | | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] ... | [INFO] [stderr] 55 | | _ => {} [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 48 | match *doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | Object::Reference(ref id) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | / match doc.get_object(*id) { [INFO] [stderr] 51 | | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] 52 | | _ => {} [INFO] [stderr] 53 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(&Object::Dictionary(ref catalog)) = doc.get_object(*id) { return catalog; }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:111:27 [INFO] [stderr] | [INFO] [stderr] 111 | let r : Vec = s.iter().map(|x| *x).flat_map(|x| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:122:27 [INFO] [stderr] | [INFO] [stderr] 122 | let r : Vec = s.iter().map(|x| *x).flat_map(|x| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | / match o { [INFO] [stderr] 144 | | &Object::Reference(r) => doc.get_object(r).expect("missing object reference"), [INFO] [stderr] 145 | | _ => o [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 143 | match *o { [INFO] [stderr] 144 | Object::Reference(r) => doc.get_object(r).expect("missing object reference"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match obj { [INFO] [stderr] 221 | | &Object::Integer(i) => Some(i as f64), [INFO] [stderr] 222 | | &Object::Real(f) => Some(f), [INFO] [stderr] 223 | | _ => None [INFO] [stderr] 224 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | match *obj { [INFO] [stderr] 221 | Object::Integer(i) => Some(i as f64), [INFO] [stderr] 222 | Object::Real(f) => Some(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | / match obj { [INFO] [stderr] 231 | | &Object::Integer(i) => Some(i), [INFO] [stderr] 232 | | _ => None [INFO] [stderr] 233 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 230 | match *obj { [INFO] [stderr] 231 | Object::Integer(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:333:18 [INFO] [stderr] | [INFO] [stderr] 333 | .map(|x| if let &Some(x) = x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 333 | .map(|x| if let Some(x) = *x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:525:17 [INFO] [stderr] | [INFO] [stderr] 525 | let mut first_char: i64 = get(doc, font, "FirstChar"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:526:17 [INFO] [stderr] | [INFO] [stderr] 526 | let mut last_char: i64 = get(doc, font, "LastChar"); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:527:17 [INFO] [stderr] | [INFO] [stderr] 527 | let mut widths: Vec = get(doc, font, "Widths"); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 35 [INFO] [stderr] --> src/lib.rs:345:5 [INFO] [stderr] | [INFO] [stderr] 345 | / fn new(doc: &'a Document, font: &'a Dictionary) -> PdfSimpleFont<'a> { [INFO] [stderr] 346 | | let base_name = get_name_string(doc, font, "BaseFont"); [INFO] [stderr] 347 | | let subtype = get_name_string(doc, font, "Subtype"); [INFO] [stderr] 348 | | [INFO] [stderr] ... | [INFO] [stderr] 538 | | PdfSimpleFont {doc, font, widths: width_map, encoding: encoding_table, default_width: None, unicode_map} [INFO] [stderr] 539 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:622:13 [INFO] [stderr] | [INFO] [stderr] 622 | let mut first_char: i64 = get(doc, font, "FirstChar"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:623:13 [INFO] [stderr] | [INFO] [stderr] 623 | let mut last_char: i64 = get(doc, font, "LastChar"); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:624:13 [INFO] [stderr] | [INFO] [stderr] 624 | let mut widths: Vec = get(doc, font, "Widths"); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:415:25 [INFO] [stderr] | [INFO] [stderr] 415 | / match o { [INFO] [stderr] 416 | | &Object::Integer(i) => { code = i; }, [INFO] [stderr] 417 | | &Object::Name(ref n) => { [INFO] [stderr] 418 | | let name = pdf_to_utf8(&n); [INFO] [stderr] ... | [INFO] [stderr] 443 | | _ => { panic!("wrong type"); } [INFO] [stderr] 444 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 415 | match *o { [INFO] [stderr] 416 | Object::Integer(i) => { code = i; }, [INFO] [stderr] 417 | Object::Name(ref n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:467:34 [INFO] [stderr] | [INFO] [stderr] 467 | .map(|x| if let &Some(x) = x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 467 | .map(|x| if let Some(x) = *x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `encoding` [INFO] [stderr] --> src/lib.rs:482:38 [INFO] [stderr] | [INFO] [stderr] 482 | for i in 0..encoding.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 482 | for (i, ) in encoding.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:594:25 [INFO] [stderr] | [INFO] [stderr] 594 | / match o { [INFO] [stderr] 595 | | &Object::Integer(i) => { code = i; }, [INFO] [stderr] 596 | | &Object::Name(ref n) => { [INFO] [stderr] 597 | | let name = pdf_to_utf8(&n); [INFO] [stderr] ... | [INFO] [stderr] 610 | | _ => { panic!("wrong type"); } [INFO] [stderr] 611 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 594 | match *o { [INFO] [stderr] 595 | Object::Integer(i) => { code = i; }, [INFO] [stderr] 596 | Object::Name(ref n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:696:30 [INFO] [stderr] | [INFO] [stderr] 696 | iter.next().map(|x| (*x as CharCode, 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(*x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:738:30 [INFO] [stderr] | [INFO] [stderr] 738 | iter.next().map(|x| (*x as CharCode, 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(*x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:793:30 [INFO] [stderr] | [INFO] [stderr] 793 | be.push(((v[i] as u16) << 8) | v[i+1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(v[i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:793:52 [INFO] [stderr] | [INFO] [stderr] 793 | be.push(((v[i] as u16) << 8) | v[i+1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(v[i+1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:796:17 [INFO] [stderr] | [INFO] [stderr] 796 | / match &be[..] { [INFO] [stderr] 797 | | [0xd800 ... 0xdfff] => { [INFO] [stderr] 798 | | // this range is not specified as not being encoded [INFO] [stderr] 799 | | // we ignore them so we don't an error from from_utt16 [INFO] [stderr] ... | [INFO] [stderr] 802 | | _ => {} [INFO] [stderr] 803 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 796 | if let [0xd800 ... 0xdfff] = &be[..] { [INFO] [stderr] 797 | // this range is not specified as not being encoded [INFO] [stderr] 798 | // we ignore them so we don't an error from from_utt16 [INFO] [stderr] 799 | continue; [INFO] [stderr] 800 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:830:9 [INFO] [stderr] | [INFO] [stderr] 830 | / match encoding { [INFO] [stderr] 831 | | &Object::Name(ref name) => { [INFO] [stderr] 832 | | let name = pdf_to_utf8(name); [INFO] [stderr] 833 | | dlog!("encoding {:?}", name); [INFO] [stderr] ... | [INFO] [stderr] 840 | | _ => { panic!("unsupported encoding {:?}", encoding)} [INFO] [stderr] 841 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 830 | match *encoding { [INFO] [stderr] 831 | Object::Name(ref name) => { [INFO] [stderr] 832 | let name = pdf_to_utf8(name); [INFO] [stderr] 833 | dlog!("encoding {:?}", name); [INFO] [stderr] 834 | assert!(name == "Identity-H"); [INFO] [stderr] 835 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:862:17 [INFO] [stderr] | [INFO] [stderr] 862 | / if let &Object::Array(ref wa) = w[i+1] { [INFO] [stderr] 863 | | let cid = w[i].as_i64().expect("id should be num"); [INFO] [stderr] 864 | | let mut j = 0; [INFO] [stderr] 865 | | dlog!("wa: {:?} -> {:?}", cid, wa); [INFO] [stderr] ... | [INFO] [stderr] 878 | | i += 3; [INFO] [stderr] 879 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 862 | if let Object::Array(ref wa) = *w[i+1] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in wa.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:866:30 [INFO] [stderr] | [INFO] [stderr] 866 | for w in wa { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:910:20 [INFO] [stderr] | [INFO] [stderr] 910 | Some((((c as u32) << 8) | next as u32, 2)) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:910:40 [INFO] [stderr] | [INFO] [stderr] 910 | Some((((c as u32) << 8) | next as u32, 2)) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(next)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1002:20 [INFO] [stderr] | [INFO] [stderr] 1002 | let dict = match obj { [INFO] [stderr] | ____________________^ [INFO] [stderr] 1003 | | &Object::Dictionary(ref dict) => dict, [INFO] [stderr] 1004 | | &Object::Stream(ref stream) => &stream.dict, [INFO] [stderr] 1005 | | _ => panic!() [INFO] [stderr] 1006 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1002 | let dict = match *obj { [INFO] [stderr] 1003 | Object::Dictionary(ref dict) => dict, [INFO] [stderr] 1004 | Object::Stream(ref stream) => &stream.dict, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1010:30 [INFO] [stderr] | [INFO] [stderr] 1010 | let stream = match obj { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 1011 | | &Object::Stream(ref stream) => stream, [INFO] [stderr] 1012 | | _ => panic!() [INFO] [stderr] 1013 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1010 | let stream = match *obj { [INFO] [stderr] 1011 | Object::Stream(ref stream) => stream, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1047:5 [INFO] [stderr] | [INFO] [stderr] 1047 | / match o { [INFO] [stderr] 1048 | | &Object::Integer(i) => { i as f64 } [INFO] [stderr] 1049 | | &Object::Real(f) => { f } [INFO] [stderr] 1050 | | _ => { panic!("not a number") } [INFO] [stderr] 1051 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1047 | match *o { [INFO] [stderr] 1048 | Object::Integer(i) => { i as f64 } [INFO] [stderr] 1049 | Object::Real(f) => { f } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1151:26 [INFO] [stderr] | [INFO] [stderr] 1151 | "SMask" => { match v { [INFO] [stderr] | __________________________^ [INFO] [stderr] 1152 | | &Object::Name(ref name) => { [INFO] [stderr] 1153 | | if name == b"None" { [INFO] [stderr] 1154 | | gs.smask = None; [INFO] [stderr] ... | [INFO] [stderr] 1159 | | _ => { panic!("unexpected smask type {:?}", v) } [INFO] [stderr] 1160 | | }} [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1151 | "SMask" => { match *v { [INFO] [stderr] 1152 | Object::Name(ref name) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1337:13 [INFO] [stderr] --> src/lib.rs:1187:9 [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] 1337 | let mut flip_ctm = Transform2D::row_major(1., 0., 0., -1., 0., media_box.ury - media_box.lly); [INFO] [stderr] 1187 | / match self.ops.last().unwrap() { [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] 1188 | | &PathOp::MoveTo(x, y) => { (x, y) } [INFO] [stderr] | | [INFO] [stderr] 1189 | | &PathOp::LineTo(x, y) => { (x, y) } [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] 1190 | | &PathOp::CurveTo(_, _, _, _, x, y) => { (x, y) } [INFO] [stderr] 1191 | | _ => { panic!() } [INFO] [stderr] 1192 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1187 | match *self.ops.last().unwrap() { [INFO] [stderr] 1188 | PathOp::MoveTo(x, y) => { (x, y) } [INFO] [stderr] 1189 | PathOp::LineTo(x, y) => { (x, y) } [INFO] [stderr] 1190 | PathOp::CurveTo(_, _, _, _, x, y) => { (x, y) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:1669:13 [INFO] [stderr] | [INFO] [stderr] 1669 | let mut ctm = Mat::create_scale(1., -1.).post_translate(vec2(0., media_box.ury)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `/` [INFO] [stderr] --> src/lib.rs:1319:37 [INFO] [stderr] | [INFO] [stderr] 1319 | horizontal_scaling: 100. / 100., [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1386:21 [INFO] [stderr] | [INFO] [stderr] 1386 | / match operation.operands[0] { [INFO] [stderr] 1387 | | Object::Array(ref array) => { [INFO] [stderr] 1388 | | for e in array { [INFO] [stderr] 1389 | | match e { [INFO] [stderr] ... | [INFO] [stderr] 1415 | | _ => {} [INFO] [stderr] 1416 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1386 | if let Object::Array(ref array) = operation.operands[0] { [INFO] [stderr] 1387 | for e in array { [INFO] [stderr] 1388 | match e { [INFO] [stderr] 1389 | &Object::String(ref s, _) => { [INFO] [stderr] 1390 | show_text(&mut gs, s, &tlm, &flip_ctm, output); [INFO] [stderr] 1391 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1389:33 [INFO] [stderr] | [INFO] [stderr] 1389 | / match e { [INFO] [stderr] 1390 | | &Object::String(ref s, _) => { [INFO] [stderr] 1391 | | show_text(&mut gs, s, &tlm, &flip_ctm, output); [INFO] [stderr] 1392 | | } [INFO] [stderr] ... | [INFO] [stderr] 1411 | | _ => { dlog!("kind of {:?}", e); } [INFO] [stderr] 1412 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1389 | match *e { [INFO] [stderr] 1390 | Object::String(ref s, _) => { [INFO] [stderr] 1391 | show_text(&mut gs, s, &tlm, &flip_ctm, output); [INFO] [stderr] 1392 | } [INFO] [stderr] 1393 | Object::Integer(i) => { [INFO] [stderr] 1394 | let ts = &mut gs.ts; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1622:9 [INFO] [stderr] | [INFO] [stderr] 1622 | write!(self.file, " "); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1623:9 [INFO] [stderr] | [INFO] [stderr] 1623 | write!(self.file, "", page_num); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1624:9 [INFO] [stderr] | [INFO] [stderr] 1624 | write!(self.file, "
", page_num, media_box.ury - media_box.lly, media_box.urx - media_box.llx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1627:9 [INFO] [stderr] | [INFO] [stderr] 1627 | write!(self.file, "
"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1630:9 [INFO] [stderr] | [INFO] [stderr] 1630 | / write!(self.file, "
{}
", [INFO] [stderr] 1631 | | x, y, font_size, char); [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1650:9 [INFO] [stderr] | [INFO] [stderr] 1650 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/lib.rs:1651:12 [INFO] [stderr] | [INFO] [stderr] 1651 | if ver == 1.1 { [INFO] [stderr] | ^^^^^^^^^^ help: consider comparing them within some error: `(ver - 1.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:1651:12 [INFO] [stderr] | [INFO] [stderr] 1651 | if ver == 1.1 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1652:13 [INFO] [stderr] | [INFO] [stderr] 1652 | write!(self.file, r#""#); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1654:13 [INFO] [stderr] | [INFO] [stderr] 1654 | write!(self.file, r#""#); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1660:13 [INFO] [stderr] | [INFO] [stderr] 1660 | write!(self.file, "", width, height, ver, art_box.0, y, width, height); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1664:13 [INFO] [stderr] | [INFO] [stderr] 1664 | write!(self.file, "", width, height, ver, media_box.llx, media_box.lly, width, height); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1666:9 [INFO] [stderr] | [INFO] [stderr] 1666 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1670:9 [INFO] [stderr] | [INFO] [stderr] 1670 | / write!(self.file, "\n", [INFO] [stderr] 1671 | | ctm.m11, [INFO] [stderr] 1672 | | ctm.m12, [INFO] [stderr] 1673 | | ctm.m21, [INFO] [stderr] ... | [INFO] [stderr] 1676 | | ctm.m32, [INFO] [stderr] 1677 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1680:9 [INFO] [stderr] | [INFO] [stderr] 1680 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1681:9 [INFO] [stderr] | [INFO] [stderr] 1681 | write!(self.file, ""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1689:9 [INFO] [stderr] | [INFO] [stderr] 1689 | / write!(self.file, "", [INFO] [stderr] 1690 | | ctm.m11, [INFO] [stderr] 1691 | | ctm.m12, [INFO] [stderr] 1692 | | ctm.m21, [INFO] [stderr] ... | [INFO] [stderr] 1695 | | ctm.m32, [INFO] [stderr] 1696 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1707:13 [INFO] [stderr] | [INFO] [stderr] 1707 | / match op { [INFO] [stderr] 1708 | | &PathOp::MoveTo(x, y) => { d.push(format!("M{} {}", x, y))} [INFO] [stderr] 1709 | | &PathOp::LineTo(x, y) => { d.push(format!("L{} {}", x, y))}, [INFO] [stderr] 1710 | | &PathOp::CurveTo(x1, y1, x2, y2, x, y) => { d.push(format!("C{} {} {} {} {} {}", x1, y1, x2, y2, x, y))}, [INFO] [stderr] ... | [INFO] [stderr] 1719 | | [INFO] [stderr] 1720 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1707 | match *op { [INFO] [stderr] 1708 | PathOp::MoveTo(x, y) => { d.push(format!("M{} {}", x, y))} [INFO] [stderr] 1709 | PathOp::LineTo(x, y) => { d.push(format!("L{} {}", x, y))}, [INFO] [stderr] 1710 | PathOp::CurveTo(x1, y1, x2, y2, x, y) => { d.push(format!("C{} {} {} {} {} {}", x1, y1, x2, y2, x, y))}, [INFO] [stderr] 1711 | PathOp::Close => { d.push(format!("Z"))}, [INFO] [stderr] 1712 | PathOp::Rect(x, y, width, height) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:1711:44 [INFO] [stderr] | [INFO] [stderr] 1711 | &PathOp::Close => { d.push(format!("Z"))}, [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"Z".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:1717:28 [INFO] [stderr] | [INFO] [stderr] 1717 | d.push(format!("Z")); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"Z".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1722:9 [INFO] [stderr] | [INFO] [stderr] 1722 | write!(self.file, "", d.join(" ")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1723:9 [INFO] [stderr] | [INFO] [stderr] 1723 | write!(self.file, ""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1724:9 [INFO] [stderr] | [INFO] [stderr] 1724 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1796:17 [INFO] [stderr] | [INFO] [stderr] 1796 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1801:17 [INFO] [stderr] | [INFO] [stderr] 1801 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1806:17 [INFO] [stderr] | [INFO] [stderr] 1806 | write!(self.writer, " "); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1810:9 [INFO] [stderr] | [INFO] [stderr] 1810 | write!(self.writer, "{}", char); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1829:13 [INFO] [stderr] | [INFO] [stderr] 1829 | / match v { [INFO] [stderr] 1830 | | &Object::String(ref s, StringFormat::Literal) => { dlog!("{}: {}", k, pdf_to_utf8(s)); } [INFO] [stderr] 1831 | | _ => {} [INFO] [stderr] 1832 | | } [INFO] [stderr] | |_____________^ help: try this: `if let &Object::String(ref s, StringFormat::Literal) = v { dlog!("{}: {}", k, pdf_to_utf8(s)); }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1829:13 [INFO] [stderr] | [INFO] [stderr] 1829 | / match v { [INFO] [stderr] 1830 | | &Object::String(ref s, StringFormat::Literal) => { dlog!("{}: {}", k, pdf_to_utf8(s)); } [INFO] [stderr] 1831 | | _ => {} [INFO] [stderr] 1832 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1829 | match *v { [INFO] [stderr] 1830 | Object::String(ref s, StringFormat::Literal) => { dlog!("{}: {}", k, pdf_to_utf8(s)); } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pdf-extract`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: constant item is never used: `STANDARD_ENCODING` [INFO] [stderr] --> src/encodings.rs:775:1 [INFO] [stderr] | [INFO] [stderr] 775 | / pub const STANDARD_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 776 | | None, [INFO] [stderr] 777 | | None, [INFO] [stderr] 778 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1031 | | None [INFO] [stderr] 1032 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EXPERT_ENCODING` [INFO] [stderr] --> src/encodings.rs:1034:1 [INFO] [stderr] | [INFO] [stderr] 1034 | / pub const EXPERT_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 1035 | | None, [INFO] [stderr] 1036 | | None, [INFO] [stderr] 1037 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1289 | | Some("Thornsmall"), [INFO] [stderr] 1290 | | Some("Ydieresissmall")]; [INFO] [stderr] | |__________________________^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `SYMBOL_ENCODING` [INFO] [stderr] --> src/encodings.rs:1292:1 [INFO] [stderr] | [INFO] [stderr] 1292 | / pub const SYMBOL_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 1293 | | None, [INFO] [stderr] 1294 | | None, [INFO] [stderr] 1295 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1547 | | Some("bracerightbt"), [INFO] [stderr] 1548 | | None]; [INFO] [stderr] | |________^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ZAPFDINGBATS_ENCODING` [INFO] [stderr] --> src/encodings.rs:1550:1 [INFO] [stderr] | [INFO] [stderr] 1550 | / pub const ZAPFDINGBATS_ENCODING: [Option<&str>; 256] = [ [INFO] [stderr] 1551 | | None, [INFO] [stderr] 1552 | | None, [INFO] [stderr] 1553 | | None, [INFO] [stderr] ... | [INFO] [stderr] 1805 | | Some("a191"), [INFO] [stderr] 1806 | | None]; [INFO] [stderr] | |________^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_type` [INFO] [stderr] --> src/lib.rs:131:1 [INFO] [stderr] | [INFO] [stderr] 131 | fn get_type(o: &Dictionary) -> &str [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `to_array4` [INFO] [stderr] --> src/lib.rs:185:1 [INFO] [stderr] | [INFO] [stderr] 185 | fn to_array4(v: Vec) -> Option<[T; 4]> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_name` [INFO] [stderr] --> src/lib.rs:257:1 [INFO] [stderr] | [INFO] [stderr] 257 | fn get_name<'a>(doc: &'a Document, dict: &'a Dictionary, key: &str) -> &'a [u8] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `maybe_get_name_string` [INFO] [stderr] --> src/lib.rs:261:1 [INFO] [stderr] | [INFO] [stderr] 261 | fn maybe_get_name_string<'a>(doc: &'a Document, dict: &'a Dictionary, key: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_encoding` [INFO] [stderr] --> src/lib.rs:541:5 [INFO] [stderr] | [INFO] [stderr] 541 | fn get_encoding(&self) -> &'a Object { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_type` [INFO] [stderr] --> src/lib.rs:544:5 [INFO] [stderr] | [INFO] [stderr] 544 | fn get_type(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_basefont` [INFO] [stderr] --> src/lib.rs:547:5 [INFO] [stderr] | [INFO] [stderr] 547 | fn get_basefont(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_subtype` [INFO] [stderr] --> src/lib.rs:550:5 [INFO] [stderr] | [INFO] [stderr] 550 | fn get_subtype(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_widths` [INFO] [stderr] --> src/lib.rs:553:5 [INFO] [stderr] | [INFO] [stderr] 553 | fn get_widths(&self) -> Option<&Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_name` [INFO] [stderr] --> src/lib.rs:558:5 [INFO] [stderr] | [INFO] [stderr] 558 | fn get_name(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_descriptor` [INFO] [stderr] --> src/lib.rs:562:5 [INFO] [stderr] | [INFO] [stderr] 562 | fn get_descriptor(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `CID` [INFO] [stderr] --> src/lib.rs:641:1 [INFO] [stderr] | [INFO] [stderr] 641 | type CID = u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `doc` [INFO] [stderr] --> src/lib.rs:767:5 [INFO] [stderr] | [INFO] [stderr] 767 | doc: &'a Document, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `encoding` [INFO] [stderr] --> src/lib.rs:768:5 [INFO] [stderr] | [INFO] [stderr] 768 | encoding: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `doc` [INFO] [stderr] --> src/lib.rs:937:5 [INFO] [stderr] | [INFO] [stderr] 937 | doc: &'a Document [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_file` [INFO] [stderr] --> src/lib.rs:941:5 [INFO] [stderr] | [INFO] [stderr] 941 | fn get_file(&self) -> Option<&'a Object> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_name` [INFO] [stderr] --> src/lib.rs:944:5 [INFO] [stderr] | [INFO] [stderr] 944 | fn get_name(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `interpolate` [INFO] [stderr] --> src/lib.rs:966:1 [INFO] [stderr] | [INFO] [stderr] 966 | fn interpolate(x: f64, x_min: f64, x_max: f64, y_min: f64, y_max: f64) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `eval` [INFO] [stderr] --> src/lib.rs:978:5 [INFO] [stderr] | [INFO] [stderr] 978 | fn eval(&self, input: &[f64], output: &mut [f64]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Type3` [INFO] [stderr] --> src/lib.rs:996:5 [INFO] [stderr] | [INFO] [stderr] 996 | Type3, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Type4` [INFO] [stderr] --> src/lib.rs:997:5 [INFO] [stderr] | [INFO] [stderr] 997 | Type4 [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/core_fonts.rs:2:21 [INFO] [stderr] | [INFO] [stderr] 2 | pub fn metrics() -> Box<[(&'static str, &'static str, &'static [(i64, f64, &'static str)])]> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u16 [INFO] [stderr] --> src/glyphnames.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | ("Digamma", 0x1d7cb), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(overflowing_literals)] on by default [INFO] [stderr] = note: the literal `0x1d7cb` (decimal `120779`) does not fit into an `u16` and will become `55243u16` [INFO] [stderr] = help: consider using `u32` instead [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / match doc.trailer.get("Info") { [INFO] [stderr] 36 | | Some(&Object::Reference(ref id)) => { [INFO] [stderr] 37 | | match doc.get_object(*id) { [INFO] [stderr] 38 | | Some(&Object::Dictionary(ref info)) => { return Some(info); } [INFO] [stderr] ... | [INFO] [stderr] 42 | | _ => {} [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 35 | if let Some(&Object::Reference(ref id)) = doc.trailer.get("Info") { [INFO] [stderr] 36 | match doc.get_object(*id) { [INFO] [stderr] 37 | Some(&Object::Dictionary(ref info)) => { return Some(info); } [INFO] [stderr] 38 | _ => {} [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | / match doc.get_object(*id) { [INFO] [stderr] 38 | | Some(&Object::Dictionary(ref info)) => { return Some(info); } [INFO] [stderr] 39 | | _ => {} [INFO] [stderr] 40 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(&Object::Dictionary(ref info)) = doc.get_object(*id) { return Some(info); }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / match doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | | &Object::Reference(ref id) => { [INFO] [stderr] 50 | | match doc.get_object(*id) { [INFO] [stderr] 51 | | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] ... | [INFO] [stderr] 55 | | _ => {} [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 48 | if let &Object::Reference(ref id) = doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | match doc.get_object(*id) { [INFO] [stderr] 50 | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] 51 | _ => {} [INFO] [stderr] 52 | } [INFO] [stderr] 53 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / match doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | | &Object::Reference(ref id) => { [INFO] [stderr] 50 | | match doc.get_object(*id) { [INFO] [stderr] 51 | | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] ... | [INFO] [stderr] 55 | | _ => {} [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 48 | match *doc.trailer.get("Root").unwrap() { [INFO] [stderr] 49 | Object::Reference(ref id) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | / match doc.get_object(*id) { [INFO] [stderr] 51 | | Some(&Object::Dictionary(ref catalog)) => { return catalog; } [INFO] [stderr] 52 | | _ => {} [INFO] [stderr] 53 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(&Object::Dictionary(ref catalog)) = doc.get_object(*id) { return catalog; }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:111:27 [INFO] [stderr] | [INFO] [stderr] 111 | let r : Vec = s.iter().map(|x| *x).flat_map(|x| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:122:27 [INFO] [stderr] | [INFO] [stderr] 122 | let r : Vec = s.iter().map(|x| *x).flat_map(|x| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | / match o { [INFO] [stderr] 144 | | &Object::Reference(r) => doc.get_object(r).expect("missing object reference"), [INFO] [stderr] 145 | | _ => o [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 143 | match *o { [INFO] [stderr] 144 | Object::Reference(r) => doc.get_object(r).expect("missing object reference"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match obj { [INFO] [stderr] 221 | | &Object::Integer(i) => Some(i as f64), [INFO] [stderr] 222 | | &Object::Real(f) => Some(f), [INFO] [stderr] 223 | | _ => None [INFO] [stderr] 224 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | match *obj { [INFO] [stderr] 221 | Object::Integer(i) => Some(i as f64), [INFO] [stderr] 222 | Object::Real(f) => Some(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | / match obj { [INFO] [stderr] 231 | | &Object::Integer(i) => Some(i), [INFO] [stderr] 232 | | _ => None [INFO] [stderr] 233 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 230 | match *obj { [INFO] [stderr] 231 | Object::Integer(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:333:18 [INFO] [stderr] | [INFO] [stderr] 333 | .map(|x| if let &Some(x) = x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 333 | .map(|x| if let Some(x) = *x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 35 [INFO] [stderr] --> src/lib.rs:345:5 [INFO] [stderr] | [INFO] [stderr] 345 | / fn new(doc: &'a Document, font: &'a Dictionary) -> PdfSimpleFont<'a> { [INFO] [stderr] 346 | | let base_name = get_name_string(doc, font, "BaseFont"); [INFO] [stderr] 347 | | let subtype = get_name_string(doc, font, "Subtype"); [INFO] [stderr] 348 | | [INFO] [stderr] ... | [INFO] [stderr] 538 | | PdfSimpleFont {doc, font, widths: width_map, encoding: encoding_table, default_width: None, unicode_map} [INFO] [stderr] 539 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:415:25 [INFO] [stderr] | [INFO] [stderr] 415 | / match o { [INFO] [stderr] 416 | | &Object::Integer(i) => { code = i; }, [INFO] [stderr] 417 | | &Object::Name(ref n) => { [INFO] [stderr] 418 | | let name = pdf_to_utf8(&n); [INFO] [stderr] ... | [INFO] [stderr] 443 | | _ => { panic!("wrong type"); } [INFO] [stderr] 444 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 415 | match *o { [INFO] [stderr] 416 | Object::Integer(i) => { code = i; }, [INFO] [stderr] 417 | Object::Name(ref n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:467:34 [INFO] [stderr] | [INFO] [stderr] 467 | .map(|x| if let &Some(x) = x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 467 | .map(|x| if let Some(x) = *x { glyphnames::name_to_unicode(x).unwrap() } else { 0 }) [INFO] [stderr] | ^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `encoding` [INFO] [stderr] --> src/lib.rs:482:38 [INFO] [stderr] | [INFO] [stderr] 482 | for i in 0..encoding.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 482 | for (i, ) in encoding.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:594:25 [INFO] [stderr] | [INFO] [stderr] 594 | / match o { [INFO] [stderr] 595 | | &Object::Integer(i) => { code = i; }, [INFO] [stderr] 596 | | &Object::Name(ref n) => { [INFO] [stderr] 597 | | let name = pdf_to_utf8(&n); [INFO] [stderr] ... | [INFO] [stderr] 610 | | _ => { panic!("wrong type"); } [INFO] [stderr] 611 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 594 | match *o { [INFO] [stderr] 595 | Object::Integer(i) => { code = i; }, [INFO] [stderr] 596 | Object::Name(ref n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:696:30 [INFO] [stderr] | [INFO] [stderr] 696 | iter.next().map(|x| (*x as CharCode, 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(*x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:738:30 [INFO] [stderr] | [INFO] [stderr] 738 | iter.next().map(|x| (*x as CharCode, 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(*x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:793:30 [INFO] [stderr] | [INFO] [stderr] 793 | be.push(((v[i] as u16) << 8) | v[i+1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(v[i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:793:52 [INFO] [stderr] | [INFO] [stderr] 793 | be.push(((v[i] as u16) << 8) | v[i+1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(v[i+1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:796:17 [INFO] [stderr] | [INFO] [stderr] 796 | / match &be[..] { [INFO] [stderr] 797 | | [0xd800 ... 0xdfff] => { [INFO] [stderr] 798 | | // this range is not specified as not being encoded [INFO] [stderr] 799 | | // we ignore them so we don't an error from from_utt16 [INFO] [stderr] ... | [INFO] [stderr] 802 | | _ => {} [INFO] [stderr] 803 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 796 | if let [0xd800 ... 0xdfff] = &be[..] { [INFO] [stderr] 797 | // this range is not specified as not being encoded [INFO] [stderr] 798 | // we ignore them so we don't an error from from_utt16 [INFO] [stderr] 799 | continue; [INFO] [stderr] 800 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:830:9 [INFO] [stderr] | [INFO] [stderr] 830 | / match encoding { [INFO] [stderr] 831 | | &Object::Name(ref name) => { [INFO] [stderr] 832 | | let name = pdf_to_utf8(name); [INFO] [stderr] 833 | | dlog!("encoding {:?}", name); [INFO] [stderr] ... | [INFO] [stderr] 840 | | _ => { panic!("unsupported encoding {:?}", encoding)} [INFO] [stderr] 841 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 830 | match *encoding { [INFO] [stderr] 831 | Object::Name(ref name) => { [INFO] [stderr] 832 | let name = pdf_to_utf8(name); [INFO] [stderr] 833 | dlog!("encoding {:?}", name); [INFO] [stderr] 834 | assert!(name == "Identity-H"); [INFO] [stderr] 835 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:862:17 [INFO] [stderr] | [INFO] [stderr] 862 | / if let &Object::Array(ref wa) = w[i+1] { [INFO] [stderr] 863 | | let cid = w[i].as_i64().expect("id should be num"); [INFO] [stderr] 864 | | let mut j = 0; [INFO] [stderr] 865 | | dlog!("wa: {:?} -> {:?}", cid, wa); [INFO] [stderr] ... | [INFO] [stderr] 878 | | i += 3; [INFO] [stderr] 879 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 862 | if let Object::Array(ref wa) = *w[i+1] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in wa.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:866:30 [INFO] [stderr] | [INFO] [stderr] 866 | for w in wa { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:910:20 [INFO] [stderr] | [INFO] [stderr] 910 | Some((((c as u32) << 8) | next as u32, 2)) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:910:40 [INFO] [stderr] | [INFO] [stderr] 910 | Some((((c as u32) << 8) | next as u32, 2)) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(next)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1002:20 [INFO] [stderr] | [INFO] [stderr] 1002 | let dict = match obj { [INFO] [stderr] | ____________________^ [INFO] [stderr] 1003 | | &Object::Dictionary(ref dict) => dict, [INFO] [stderr] 1004 | | &Object::Stream(ref stream) => &stream.dict, [INFO] [stderr] 1005 | | _ => panic!() [INFO] [stderr] 1006 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1002 | let dict = match *obj { [INFO] [stderr] 1003 | Object::Dictionary(ref dict) => dict, [INFO] [stderr] 1004 | Object::Stream(ref stream) => &stream.dict, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1010:30 [INFO] [stderr] | [INFO] [stderr] 1010 | let stream = match obj { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 1011 | | &Object::Stream(ref stream) => stream, [INFO] [stderr] 1012 | | _ => panic!() [INFO] [stderr] 1013 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1010 | let stream = match *obj { [INFO] [stderr] 1011 | Object::Stream(ref stream) => stream, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1047:5 [INFO] [stderr] | [INFO] [stderr] 1047 | / match o { [INFO] [stderr] 1048 | | &Object::Integer(i) => { i as f64 } [INFO] [stderr] 1049 | | &Object::Real(f) => { f } [INFO] [stderr] 1050 | | _ => { panic!("not a number") } [INFO] [stderr] 1051 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1047 | match *o { [INFO] [stderr] 1048 | Object::Integer(i) => { i as f64 } [INFO] [stderr] 1049 | Object::Real(f) => { f } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1151:26 [INFO] [stderr] | [INFO] [stderr] 1151 | "SMask" => { match v { [INFO] [stderr] | __________________________^ [INFO] [stderr] 1152 | | &Object::Name(ref name) => { [INFO] [stderr] 1153 | | if name == b"None" { [INFO] [stderr] 1154 | | gs.smask = None; [INFO] [stderr] ... | [INFO] [stderr] 1159 | | _ => { panic!("unexpected smask type {:?}", v) } [INFO] [stderr] 1160 | | }} [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1151 | "SMask" => { match *v { [INFO] [stderr] 1152 | Object::Name(ref name) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1187:9 [INFO] [stderr] | [INFO] [stderr] 1187 | / match self.ops.last().unwrap() { [INFO] [stderr] 1188 | | &PathOp::MoveTo(x, y) => { (x, y) } [INFO] [stderr] 1189 | | &PathOp::LineTo(x, y) => { (x, y) } [INFO] [stderr] 1190 | | &PathOp::CurveTo(_, _, _, _, x, y) => { (x, y) } [INFO] [stderr] 1191 | | _ => { panic!() } [INFO] [stderr] 1192 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1187 | match *self.ops.last().unwrap() { [INFO] [stderr] 1188 | PathOp::MoveTo(x, y) => { (x, y) } [INFO] [stderr] 1189 | PathOp::LineTo(x, y) => { (x, y) } [INFO] [stderr] 1190 | PathOp::CurveTo(_, _, _, _, x, y) => { (x, y) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `/` [INFO] [stderr] --> src/lib.rs:1319:37 [INFO] [stderr] | [INFO] [stderr] 1319 | horizontal_scaling: 100. / 100., [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1386:21 [INFO] [stderr] | [INFO] [stderr] 1386 | / match operation.operands[0] { [INFO] [stderr] 1387 | | Object::Array(ref array) => { [INFO] [stderr] 1388 | | for e in array { [INFO] [stderr] 1389 | | match e { [INFO] [stderr] ... | [INFO] [stderr] 1415 | | _ => {} [INFO] [stderr] 1416 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1386 | if let Object::Array(ref array) = operation.operands[0] { [INFO] [stderr] 1387 | for e in array { [INFO] [stderr] 1388 | match e { [INFO] [stderr] 1389 | &Object::String(ref s, _) => { [INFO] [stderr] 1390 | show_text(&mut gs, s, &tlm, &flip_ctm, output); [INFO] [stderr] 1391 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1389:33 [INFO] [stderr] | [INFO] [stderr] 1389 | / match e { [INFO] [stderr] 1390 | | &Object::String(ref s, _) => { [INFO] [stderr] 1391 | | show_text(&mut gs, s, &tlm, &flip_ctm, output); [INFO] [stderr] 1392 | | } [INFO] [stderr] ... | [INFO] [stderr] 1411 | | _ => { dlog!("kind of {:?}", e); } [INFO] [stderr] 1412 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1389 | match *e { [INFO] [stderr] 1390 | Object::String(ref s, _) => { [INFO] [stderr] 1391 | show_text(&mut gs, s, &tlm, &flip_ctm, output); [INFO] [stderr] 1392 | } [INFO] [stderr] 1393 | Object::Integer(i) => { [INFO] [stderr] 1394 | let ts = &mut gs.ts; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1622:9 [INFO] [stderr] | [INFO] [stderr] 1622 | write!(self.file, " "); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1623:9 [INFO] [stderr] | [INFO] [stderr] 1623 | write!(self.file, "", page_num); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1624:9 [INFO] [stderr] | [INFO] [stderr] 1624 | write!(self.file, "
", page_num, media_box.ury - media_box.lly, media_box.urx - media_box.llx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1627:9 [INFO] [stderr] | [INFO] [stderr] 1627 | write!(self.file, "
"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1630:9 [INFO] [stderr] | [INFO] [stderr] 1630 | / write!(self.file, "
{}
", [INFO] [stderr] 1631 | | x, y, font_size, char); [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1650:9 [INFO] [stderr] | [INFO] [stderr] 1650 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/lib.rs:1651:12 [INFO] [stderr] | [INFO] [stderr] 1651 | if ver == 1.1 { [INFO] [stderr] | ^^^^^^^^^^ help: consider comparing them within some error: `(ver - 1.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:1651:12 [INFO] [stderr] | [INFO] [stderr] 1651 | if ver == 1.1 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1652:13 [INFO] [stderr] | [INFO] [stderr] 1652 | write!(self.file, r#""#); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1654:13 [INFO] [stderr] | [INFO] [stderr] 1654 | write!(self.file, r#""#); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1660:13 [INFO] [stderr] | [INFO] [stderr] 1660 | write!(self.file, "", width, height, ver, art_box.0, y, width, height); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1664:13 [INFO] [stderr] | [INFO] [stderr] 1664 | write!(self.file, "", width, height, ver, media_box.llx, media_box.lly, width, height); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1666:9 [INFO] [stderr] | [INFO] [stderr] 1666 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1670:9 [INFO] [stderr] | [INFO] [stderr] 1670 | / write!(self.file, "\n", [INFO] [stderr] 1671 | | ctm.m11, [INFO] [stderr] 1672 | | ctm.m12, [INFO] [stderr] 1673 | | ctm.m21, [INFO] [stderr] ... | [INFO] [stderr] 1676 | | ctm.m32, [INFO] [stderr] 1677 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1680:9 [INFO] [stderr] | [INFO] [stderr] 1680 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1681:9 [INFO] [stderr] | [INFO] [stderr] 1681 | write!(self.file, ""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1689:9 [INFO] [stderr] | [INFO] [stderr] 1689 | / write!(self.file, "", [INFO] [stderr] 1690 | | ctm.m11, [INFO] [stderr] 1691 | | ctm.m12, [INFO] [stderr] 1692 | | ctm.m21, [INFO] [stderr] ... | [INFO] [stderr] 1695 | | ctm.m32, [INFO] [stderr] 1696 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1707:13 [INFO] [stderr] | [INFO] [stderr] 1707 | / match op { [INFO] [stderr] 1708 | | &PathOp::MoveTo(x, y) => { d.push(format!("M{} {}", x, y))} [INFO] [stderr] 1709 | | &PathOp::LineTo(x, y) => { d.push(format!("L{} {}", x, y))}, [INFO] [stderr] 1710 | | &PathOp::CurveTo(x1, y1, x2, y2, x, y) => { d.push(format!("C{} {} {} {} {} {}", x1, y1, x2, y2, x, y))}, [INFO] [stderr] ... | [INFO] [stderr] 1719 | | [INFO] [stderr] 1720 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1707 | match *op { [INFO] [stderr] 1708 | PathOp::MoveTo(x, y) => { d.push(format!("M{} {}", x, y))} [INFO] [stderr] 1709 | PathOp::LineTo(x, y) => { d.push(format!("L{} {}", x, y))}, [INFO] [stderr] 1710 | PathOp::CurveTo(x1, y1, x2, y2, x, y) => { d.push(format!("C{} {} {} {} {} {}", x1, y1, x2, y2, x, y))}, [INFO] [stderr] 1711 | PathOp::Close => { d.push(format!("Z"))}, [INFO] [stderr] 1712 | PathOp::Rect(x, y, width, height) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:1711:44 [INFO] [stderr] | [INFO] [stderr] 1711 | &PathOp::Close => { d.push(format!("Z"))}, [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"Z".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:1717:28 [INFO] [stderr] | [INFO] [stderr] 1717 | d.push(format!("Z")); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"Z".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1722:9 [INFO] [stderr] | [INFO] [stderr] 1722 | write!(self.file, "", d.join(" ")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1723:9 [INFO] [stderr] | [INFO] [stderr] 1723 | write!(self.file, ""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1724:9 [INFO] [stderr] | [INFO] [stderr] 1724 | write!(self.file, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1796:17 [INFO] [stderr] | [INFO] [stderr] 1796 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1801:17 [INFO] [stderr] | [INFO] [stderr] 1801 | write!(self.writer, "\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1806:17 [INFO] [stderr] | [INFO] [stderr] 1806 | write!(self.writer, " "); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:1810:9 [INFO] [stderr] | [INFO] [stderr] 1810 | write!(self.writer, "{}", char); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1829:13 [INFO] [stderr] | [INFO] [stderr] 1829 | / match v { [INFO] [stderr] 1830 | | &Object::String(ref s, StringFormat::Literal) => { dlog!("{}: {}", k, pdf_to_utf8(s)); } [INFO] [stderr] 1831 | | _ => {} [INFO] [stderr] 1832 | | } [INFO] [stderr] | |_____________^ help: try this: `if let &Object::String(ref s, StringFormat::Literal) = v { dlog!("{}: {}", k, pdf_to_utf8(s)); }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1829:13 [INFO] [stderr] | [INFO] [stderr] 1829 | / match v { [INFO] [stderr] 1830 | | &Object::String(ref s, StringFormat::Literal) => { dlog!("{}: {}", k, pdf_to_utf8(s)); } [INFO] [stderr] 1831 | | _ => {} [INFO] [stderr] 1832 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1829 | match *v { [INFO] [stderr] 1830 | Object::String(ref s, StringFormat::Literal) => { dlog!("{}: {}", k, pdf_to_utf8(s)); } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pdf-extract`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "43a5a87cebdd775bacaca0f847256d3aa811fd71351bfb67e67c85c66b63db36"` [INFO] running `"docker" "rm" "-f" "43a5a87cebdd775bacaca0f847256d3aa811fd71351bfb67e67c85c66b63db36"` [INFO] [stdout] 43a5a87cebdd775bacaca0f847256d3aa811fd71351bfb67e67c85c66b63db36