Fix several new clippy lints
This commit is contained in:
parent
0ddd875c84
commit
1d39714b0f
5 changed files with 52 additions and 127 deletions
|
|
@ -1,3 +1,6 @@
|
|||
**Version 0.8.1 (unreleased)**
|
||||
- Minor optimizations
|
||||
|
||||
**Version 0.8.0**
|
||||
- [SEMVER_MINOR] Add support for optimizing PNGs already loaded into memory via library function
|
||||
|
||||
|
|
|
|||
118
Cargo.lock
generated
118
Cargo.lock
generated
|
|
@ -4,13 +4,13 @@ version = "0.8.0"
|
|||
dependencies = [
|
||||
"bit-vec 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clap 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clap 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"crc 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"image 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"image 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 0.1.69 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"scoped-pool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
|
@ -33,19 +33,14 @@ name = "bit-vec"
|
|||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "0.4.2"
|
||||
name = "bitflags"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
|
|
@ -55,7 +50,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "2.4.0"
|
||||
version = "2.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"ansi_term 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
@ -66,11 +61,6 @@ dependencies = [
|
|||
"vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "color_quant"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "crc"
|
||||
version = "1.2.0"
|
||||
|
|
@ -84,14 +74,6 @@ name = "crossbeam"
|
|||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "deque"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "enum_primitive"
|
||||
version = "0.1.0"
|
||||
|
|
@ -100,19 +82,9 @@ dependencies = [
|
|||
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "euclid"
|
||||
version = "0.6.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
version = "0.2.13"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
@ -124,15 +96,6 @@ name = "gcc"
|
|||
version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "gif"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
version = "0.2.11"
|
||||
|
|
@ -140,16 +103,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "image"
|
||||
version = "0.8.0"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gif 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"jpeg-decoder 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"png 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-rational 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"png 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -157,23 +120,12 @@ name = "inflate"
|
|||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "jpeg-decoder"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-rational 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rayon 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "kernel32-sys"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
|
@ -197,16 +149,6 @@ dependencies = [
|
|||
"pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "lzw"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "0.1.11"
|
||||
|
|
@ -229,11 +171,8 @@ name = "num"
|
|||
version = "0.1.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"num-bigint 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-complex 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-integer 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-rational 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
|
@ -248,15 +187,6 @@ dependencies = [
|
|||
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-complex"
|
||||
version = "0.1.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.32"
|
||||
|
|
@ -292,7 +222,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "0.2.11"
|
||||
version = "0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
@ -305,11 +235,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "png"
|
||||
version = "0.4.3"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"flate2 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bitflags 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"flate2 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"inflate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
@ -323,16 +253,6 @@ dependencies = [
|
|||
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rayon"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "0.1.69"
|
||||
|
|
@ -414,7 +334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.2.6"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
|
|
|
|||
|
|
@ -33,5 +33,7 @@ num_cpus = "^0.2.11"
|
|||
regex = "^0.1.63"
|
||||
scoped-pool = "^0.1.8"
|
||||
|
||||
[dev-dependencies]
|
||||
image = "^0.8.0"
|
||||
[dev-dependencies.image]
|
||||
version = "^0.10.0"
|
||||
default-features = false
|
||||
features = ["png_codec"]
|
||||
|
|
|
|||
16
src/lib.rs
16
src/lib.rs
|
|
@ -163,7 +163,7 @@ pub fn optimize(filepath: &Path, opts: &Options) -> Result<(), String> {
|
|||
|
||||
let in_file = Path::new(filepath);
|
||||
let original_size = in_file.metadata().unwrap().len() as usize;
|
||||
let mut png = match png::PngData::new(&in_file, opts.fix_errors) {
|
||||
let mut png = match png::PngData::new(in_file, opts.fix_errors) {
|
||||
Ok(x) => x,
|
||||
Err(x) => return Err(x),
|
||||
};
|
||||
|
|
@ -278,7 +278,7 @@ pub fn optimize_from_memory(data: &[u8], opts: &Options) -> Result<Vec<u8>, Stri
|
|||
writeln!(&mut stderr(), "Processing from memory").ok();
|
||||
}
|
||||
let original_size = data.len() as usize;
|
||||
let mut png = match png::PngData::from_slice(&data, opts.fix_errors) {
|
||||
let mut png = match png::PngData::from_slice(data, opts.fix_errors) {
|
||||
Ok(x) => x,
|
||||
Err(x) => return Err(x),
|
||||
};
|
||||
|
|
@ -355,7 +355,7 @@ fn optimize_png(mut png: &mut png::PngData, file_original_size: usize, opts: &Op
|
|||
}
|
||||
}
|
||||
|
||||
let something_changed = perform_reductions(&mut png, &opts);
|
||||
let something_changed = perform_reductions(&mut png, opts);
|
||||
|
||||
if opts.idat_recoding || something_changed {
|
||||
let thread_count = opts.threads;
|
||||
|
|
@ -434,7 +434,7 @@ fn optimize_png(mut png: &mut png::PngData, file_original_size: usize, opts: &Op
|
|||
}
|
||||
}
|
||||
|
||||
perform_strip(&mut png, &opts);
|
||||
perform_strip(&mut png, opts);
|
||||
|
||||
let output = png.output();
|
||||
|
||||
|
|
@ -483,7 +483,7 @@ fn perform_reductions(png: &mut png::PngData, opts: &Options) -> bool {
|
|||
if png.reduce_palette() {
|
||||
something_changed = true;
|
||||
if opts.verbosity == Some(1) {
|
||||
report_reduction(&png);
|
||||
report_reduction(png);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -492,7 +492,7 @@ fn perform_reductions(png: &mut png::PngData, opts: &Options) -> bool {
|
|||
if png.reduce_bit_depth() {
|
||||
something_changed = true;
|
||||
if opts.verbosity == Some(1) {
|
||||
report_reduction(&png);
|
||||
report_reduction(png);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -501,13 +501,13 @@ fn perform_reductions(png: &mut png::PngData, opts: &Options) -> bool {
|
|||
if png.reduce_color_type() {
|
||||
something_changed = true;
|
||||
if opts.verbosity == Some(1) {
|
||||
report_reduction(&png);
|
||||
report_reduction(png);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
if something_changed && opts.verbosity.is_some() {
|
||||
report_reduction(&png);
|
||||
report_reduction(png);
|
||||
}
|
||||
|
||||
if let Some(interlacing) = opts.interlace {
|
||||
|
|
|
|||
36
src/png.rs
36
src/png.rs
|
|
@ -4,7 +4,7 @@ use crc::crc32;
|
|||
use std::collections::{HashMap, HashSet};
|
||||
use std::fmt;
|
||||
use std::fs::File;
|
||||
use std::io::{Cursor, Read, Write};
|
||||
use std::io::{Cursor, Read};
|
||||
use std::iter::Iterator;
|
||||
use std::path::Path;
|
||||
|
||||
|
|
@ -408,7 +408,7 @@ impl PngData {
|
|||
for (key, header) in self.aux_headers.iter().filter(|&(ref key, _)| {
|
||||
!(**key == "bKGD" || **key == "hIST" || **key == "tRNS")
|
||||
}) {
|
||||
write_png_block(&key.as_bytes(), &header, &mut output);
|
||||
write_png_block(key.as_bytes(), header, &mut output);
|
||||
}
|
||||
// Palette
|
||||
if let Some(palette) = self.palette.clone() {
|
||||
|
|
@ -425,7 +425,7 @@ impl PngData {
|
|||
for (key, header) in self.aux_headers.iter().filter(|&(ref key, _)| {
|
||||
**key == "bKGD" || **key == "hIST" || **key == "tRNS"
|
||||
}) {
|
||||
write_png_block(&key.as_bytes(), &header, &mut output);
|
||||
write_png_block(key.as_bytes(), header, &mut output);
|
||||
}
|
||||
// IDAT data
|
||||
write_png_block(b"IDAT", &self.idat_data, &mut output);
|
||||
|
|
@ -437,7 +437,7 @@ impl PngData {
|
|||
/// Return an iterator over the scanlines of the image
|
||||
pub fn scan_lines(&self) -> ScanLines {
|
||||
ScanLines {
|
||||
png: &self,
|
||||
png: self,
|
||||
start: 0,
|
||||
end: 0,
|
||||
pass: None,
|
||||
|
|
@ -711,14 +711,14 @@ impl PngData {
|
|||
let lower = *byte & 0b00001111;
|
||||
let mut new_byte = 0u8;
|
||||
if let Some(new_idx) = index_map.get(&upper) {
|
||||
new_byte = new_byte & (*new_idx << 4);
|
||||
new_byte &= *new_idx << 4;
|
||||
} else {
|
||||
new_byte = new_byte & (upper << 4);
|
||||
new_byte &= upper << 4;
|
||||
}
|
||||
if let Some(new_idx) = index_map.get(&lower) {
|
||||
new_byte = new_byte & *new_idx;
|
||||
new_byte &= *new_idx;
|
||||
} else {
|
||||
new_byte = new_byte & lower;
|
||||
new_byte &= lower;
|
||||
}
|
||||
new_data.push(new_byte);
|
||||
}
|
||||
|
|
@ -731,24 +731,24 @@ impl PngData {
|
|||
let four = *byte & 0b00000011;
|
||||
let mut new_byte = 0u8;
|
||||
if let Some(new_idx) = index_map.get(&one) {
|
||||
new_byte = new_byte & (*new_idx << 6);
|
||||
new_byte &= *new_idx << 6;
|
||||
} else {
|
||||
new_byte = new_byte & (one << 6);
|
||||
new_byte &= one << 6;
|
||||
}
|
||||
if let Some(new_idx) = index_map.get(&two) {
|
||||
new_byte = new_byte & (*new_idx << 4);
|
||||
new_byte &= *new_idx << 4;
|
||||
} else {
|
||||
new_byte = new_byte & (two << 4);
|
||||
new_byte &= two << 4;
|
||||
}
|
||||
if let Some(new_idx) = index_map.get(&three) {
|
||||
new_byte = new_byte & (*new_idx << 2);
|
||||
new_byte &= *new_idx << 2;
|
||||
} else {
|
||||
new_byte = new_byte & (three << 2);
|
||||
new_byte &= three << 2;
|
||||
}
|
||||
if let Some(new_idx) = index_map.get(&four) {
|
||||
new_byte = new_byte & *new_idx;
|
||||
new_byte &= *new_idx;
|
||||
} else {
|
||||
new_byte = new_byte & four;
|
||||
new_byte &= four;
|
||||
}
|
||||
new_data.push(new_byte);
|
||||
}
|
||||
|
|
@ -1401,7 +1401,7 @@ fn reduce_rgb_to_palette(png: &PngData) -> Option<(Vec<u8>, Vec<u8>)> {
|
|||
|
||||
let mut color_palette = Vec::with_capacity(palette.len() * 3);
|
||||
for color in &palette {
|
||||
color_palette.extend_from_slice(&color);
|
||||
color_palette.extend_from_slice(color);
|
||||
}
|
||||
|
||||
Some((reduced, color_palette))
|
||||
|
|
@ -1453,7 +1453,7 @@ fn reduce_grayscale_to_palette(png: &PngData) -> Option<(Vec<u8>, Vec<u8>)> {
|
|||
|
||||
let mut color_palette = Vec::with_capacity(palette.len() * 3);
|
||||
for color in &palette {
|
||||
color_palette.extend_from_slice(&color);
|
||||
color_palette.extend_from_slice(color);
|
||||
}
|
||||
|
||||
Some((reduced.to_bytes(), color_palette))
|
||||
|
|
|
|||
Loading…
Reference in a new issue