[INFO] updating cached repository arthurmco/oxImage [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/arthurmco/oxImage [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/arthurmco/oxImage" "work/ex/clippy-test-run/sources/stable/gh/arthurmco/oxImage"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/arthurmco/oxImage'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/arthurmco/oxImage" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/arthurmco/oxImage"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/arthurmco/oxImage'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c67a063eae4693828e70aa564d8b3bc52bc08853 [INFO] sha for GitHub repo arthurmco/oxImage: c67a063eae4693828e70aa564d8b3bc52bc08853 [INFO] validating manifest of arthurmco/oxImage 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 arthurmco/oxImage 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 arthurmco/oxImage [INFO] finished frobbing arthurmco/oxImage [INFO] frobbed toml for arthurmco/oxImage written to work/ex/clippy-test-run/sources/stable/gh/arthurmco/oxImage/Cargo.toml [INFO] started frobbing arthurmco/oxImage [INFO] finished frobbing arthurmco/oxImage [INFO] frobbed toml for arthurmco/oxImage written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/arthurmco/oxImage/Cargo.toml [INFO] crate arthurmco/oxImage has a lockfile. skipping [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 arthurmco/oxImage against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/arthurmco/oxImage:/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] 3e87f13c124153136796fb31f265bce549395aa6c6ba327eb522c158c51e2bdc [INFO] running `"docker" "start" "-a" "3e87f13c124153136796fb31f265bce549395aa6c6ba327eb522c158c51e2bdc"` [INFO] [stderr] Checking jpeg-decoder v0.1.13 [INFO] [stderr] Checking image v0.15.0 [INFO] [stderr] Checking oximage v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:25:35 [INFO] [stderr] | [INFO] [stderr] 25 | Image{name: String::from(name), width: width, height: height, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:25:49 [INFO] [stderr] | [INFO] [stderr] 25 | Image{name: String::from(name), width: width, height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [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: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:30:61 [INFO] [stderr] | [INFO] [stderr] 30 | Image{path: String::from(file), name: String::from(name), width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [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: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:31:4 [INFO] [stderr] | [INFO] [stderr] 31 | height: height, data: ImageData::create_from_data(data, (width*height) as usize)} [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [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 `println!("")` [INFO] [stderr] --> src/main.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:25:35 [INFO] [stderr] | [INFO] [stderr] 25 | Image{name: String::from(name), width: width, height: height, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:25:49 [INFO] [stderr] | [INFO] [stderr] 25 | Image{name: String::from(name), width: width, height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [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: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:30:61 [INFO] [stderr] | [INFO] [stderr] 30 | Image{path: String::from(file), name: String::from(name), width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [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: redundant field names in struct initialization [INFO] [stderr] --> src/picture/pimage.rs:31:4 [INFO] [stderr] | [INFO] [stderr] 31 | height: height, data: ImageData::create_from_data(data, (width*height) as usize)} [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [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 `println!("")` [INFO] [stderr] --> src/main.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/picture/imagecollection.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Image` [INFO] [stderr] --> src/picture/imagecollection.rs:4:58 [INFO] [stderr] | [INFO] [stderr] 4 | use super::{ImageCollectionElement, ImageCollectionItem, Image}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/picture/imagefile.rs:36:3 [INFO] [stderr] | [INFO] [stderr] 36 | return Ok(Image::create_from_data(&filename, &filename, w, h, &data)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Image::create_from_data(&filename, &filename, w, h, &data))` [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/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | return Some(command); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(command)` [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 variable: `oldname` [INFO] [stderr] --> src/picture/imagecollection.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn rename_element(&mut self, oldname: &str, newname: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_oldname` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `newname` [INFO] [stderr] --> src/picture/imagecollection.rs:62:50 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn rename_element(&mut self, oldname: &str, newname: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_newname` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `data` [INFO] [stderr] --> src/picture/pimage.rs:12:2 [INFO] [stderr] | [INFO] [stderr] 12 | data: ImageData, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `create_empty` [INFO] [stderr] --> src/picture/pimage.rs:21:2 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn create_empty(name: &str, width: u32, height: u32) -> Image { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_pixel` [INFO] [stderr] --> src/picture/pimage.rs:34:2 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn get_pixel(&self, x: u32, y: u32) -> u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `resize_area` [INFO] [stderr] --> src/picture/pimage.rs:38:2 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn resize_area(&mut self, nwidth: u32, nheight: u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `d` [INFO] [stderr] --> src/picture/imagecollection.rs:21:2 [INFO] [stderr] | [INFO] [stderr] 21 | d: &'a ImageCollectionList, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_element` [INFO] [stderr] --> src/picture/imagecollection.rs:58:2 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn get_element(&self, filename: &str) -> Option<&ImageCollectionItem> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rename_element` [INFO] [stderr] --> src/picture/imagecollection.rs:62:2 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn rename_element(&mut self, oldname: &str, newname: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remove_element` [INFO] [stderr] --> src/picture/imagecollection.rs:66:2 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn remove_element(&mut self, filename: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `ImageList` [INFO] [stderr] --> src/picture/collectionitem.rs:10:2 [INFO] [stderr] | [INFO] [stderr] 10 | ImageList(ImageCollectionList), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `filename` [INFO] [stderr] --> src/picture/imagefile.rs:12:2 [INFO] [stderr] | [INFO] [stderr] 12 | filename: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `create_empty` [INFO] [stderr] --> src/picture/imagedata.rs:17:2 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn create_empty(size: usize) -> ImageData { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_data` [INFO] [stderr] --> src/picture/imagedata.rs:38:2 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn set_data(&mut self, data: &[u32]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/picture/imagefile.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | let cr = val.data[0] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[0])` [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/picture/imagefile.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let cg = val.data[1] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/picture/imagefile.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let cb = val.data[2] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[2])` [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/picture/imagefile.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | let ca = val.data[3] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[3])` [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] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/picture/imagedata.rs:28:12 [INFO] [stderr] | [INFO] [stderr] 28 | let dd = data.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 28 | let dd = &(*data).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 28 | let dd = &[u32]::clone(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/picture/imagedata.rs:41:12 [INFO] [stderr] | [INFO] [stderr] 41 | let dd = data.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 41 | let dd = &(*data).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 41 | let dd = &[u32]::clone(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:19:8 [INFO] [stderr] | [INFO] [stderr] 19 | if command.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `command.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | / match item { [INFO] [stderr] 52 | | &ImageCollectionItem::ImageItem(ref img) => println!("{}, image", img.get_display_name()), [INFO] [stderr] 53 | | &ImageCollectionItem::ImageList(ref ilst) => println!("{}, collection", ilst.get_display_name()) [INFO] [stderr] 54 | | }; [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] 51 | match *item { [INFO] [stderr] 52 | ImageCollectionItem::ImageItem(ref img) => println!("{}, image", img.get_display_name()), [INFO] [stderr] 53 | ImageCollectionItem::ImageList(ref ilst) => println!("{}, collection", ilst.get_display_name()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `oximage`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/pimage.rs:88:23 [INFO] [stderr] | [INFO] [stderr] 88 | let mut data = vec![0xff0000ff]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [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: long literal lacking separators [INFO] [stderr] --> src/picture/pimage.rs:89:21 [INFO] [stderr] | [INFO] [stderr] 89 | data.resize(1024, 0xff0000ff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/pimage.rs:92:14 [INFO] [stderr] | [INFO] [stderr] 92 | assert_eq!(0xff0000ff, i.data.bdata[48], "Not correctly loaded"); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/pimage.rs:95:14 [INFO] [stderr] | [INFO] [stderr] 95 | assert_ne!(0xff0000ff, i.data.bdata[48], "Not correctly resized: not even resized"); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/picture/imagecollection.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/picture/imagefile.rs:36:3 [INFO] [stderr] | [INFO] [stderr] 36 | return Ok(Image::create_from_data(&filename, &filename, w, h, &data)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Image::create_from_data(&filename, &filename, w, h, &data))` [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: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:54:14 [INFO] [stderr] | [INFO] [stderr] 54 | assert_eq!(0x000000ff, image.get_pixel(0, 0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:55:14 [INFO] [stderr] | [INFO] [stderr] 55 | assert_eq!(0x000000ff, image.get_pixel(100, 0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | assert_eq!(0x000000ff, image.get_pixel(100, 100)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:57:14 [INFO] [stderr] | [INFO] [stderr] 57 | assert_eq!(0x000000ff, image.get_pixel(200, 100)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:58:14 [INFO] [stderr] | [INFO] [stderr] 58 | assert_eq!(0x000000ff, image.get_pixel(200, 200)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:59:14 [INFO] [stderr] | [INFO] [stderr] 59 | assert_eq!(0x000000ff, image.get_pixel(300, 100)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:69:14 [INFO] [stderr] | [INFO] [stderr] 69 | assert_eq!(0xff0000ff, image.get_pixel(0, 0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:70:14 [INFO] [stderr] | [INFO] [stderr] 70 | assert_eq!(0xff0000ff, image.get_pixel(100, 0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:71:14 [INFO] [stderr] | [INFO] [stderr] 71 | assert_eq!(0xff0000ff, image.get_pixel(300, 100)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:72:14 [INFO] [stderr] | [INFO] [stderr] 72 | assert_eq!(0xff0000ff, image.get_pixel(500, 100)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:73:14 [INFO] [stderr] | [INFO] [stderr] 73 | assert_eq!(0xff0000ff, image.get_pixel(600, 201)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagefile.rs:74:14 [INFO] [stderr] | [INFO] [stderr] 74 | assert_eq!(0xff0000ff, image.get_pixel(800, 100)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:77:14 [INFO] [stderr] | [INFO] [stderr] 77 | assert_eq!(0xff000000, pack_pixel(255, 0, 0, 0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:78:14 [INFO] [stderr] | [INFO] [stderr] 78 | assert_eq!(0x00ff0000, pack_pixel(0, 255, 0, 0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00ff_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:79:14 [INFO] [stderr] | [INFO] [stderr] 79 | assert_eq!(0x0000ff00, pack_pixel(0, 0, 255, 0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_ff00` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:80:14 [INFO] [stderr] | [INFO] [stderr] 80 | assert_eq!(0x000000ff, pack_pixel(0, 0, 0, 255)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:93:23 [INFO] [stderr] | [INFO] [stderr] 93 | let mut data = vec![0xff0000ff]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:94:21 [INFO] [stderr] | [INFO] [stderr] 94 | data.resize(1024, 0xff0000ff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:98:14 [INFO] [stderr] | [INFO] [stderr] 98 | assert_eq!(0xff0000ff, img.bdata[32]); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:100:23 [INFO] [stderr] | [INFO] [stderr] 100 | let mut data = vec![0x0000ffff]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:101:21 [INFO] [stderr] | [INFO] [stderr] 101 | data.resize(1024, 0x0000ffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:105:14 [INFO] [stderr] | [INFO] [stderr] 105 | assert_ne!(0xff0000ff, img.bdata[32], "Data not changed"); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xff00_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/picture/imagedata.rs:106:14 [INFO] [stderr] | [INFO] [stderr] 106 | assert_eq!(0x0000ffff, img.bdata[32], "Garbage in data"); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_ffff` [INFO] [stderr] | [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/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | return Some(command); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(command)` [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 variable: `oldname` [INFO] [stderr] --> src/picture/imagecollection.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn rename_element(&mut self, oldname: &str, newname: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_oldname` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `newname` [INFO] [stderr] --> src/picture/imagecollection.rs:62:50 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn rename_element(&mut self, oldname: &str, newname: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_newname` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/picture/imagecollection.rs:154:7 [INFO] [stderr] | [INFO] [stderr] 154 | let mut it = ic.iterator(); [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: field is never used: `d` [INFO] [stderr] --> src/picture/imagecollection.rs:21:2 [INFO] [stderr] | [INFO] [stderr] 21 | d: &'a ImageCollectionList, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rename_element` [INFO] [stderr] --> src/picture/imagecollection.rs:62:2 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn rename_element(&mut self, oldname: &str, newname: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `ImageList` [INFO] [stderr] --> src/picture/collectionitem.rs:10:2 [INFO] [stderr] | [INFO] [stderr] 10 | ImageList(ImageCollectionList), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `filename` [INFO] [stderr] --> src/picture/imagefile.rs:12:2 [INFO] [stderr] | [INFO] [stderr] 12 | filename: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/picture/imagecollection.rs:156:10 [INFO] [stderr] | [INFO] [stderr] 156 | match item { [INFO] [stderr] | _____________^ [INFO] [stderr] 157 | | &ImageCollectionItem::ImageItem(ref img) => { [INFO] [stderr] 158 | | if img.path == pvec[0] { [INFO] [stderr] 159 | | bvec[0] = true; [INFO] [stderr] ... | [INFO] [stderr] 164 | | _ => panic!("Unexistant type for this list!") [INFO] [stderr] 165 | | }; [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] 156 | match *item { [INFO] [stderr] 157 | ImageCollectionItem::ImageItem(ref img) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/picture/imagefile.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | let cr = val.data[0] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[0])` [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/picture/imagefile.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let cg = val.data[1] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/picture/imagefile.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let cb = val.data[2] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[2])` [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/picture/imagefile.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | let ca = val.data[3] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(val.data[3])` [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] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/picture/imagedata.rs:28:12 [INFO] [stderr] | [INFO] [stderr] 28 | let dd = data.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 28 | let dd = &(*data).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 28 | let dd = &[u32]::clone(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/picture/imagedata.rs:41:12 [INFO] [stderr] | [INFO] [stderr] 41 | let dd = data.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 41 | let dd = &(*data).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 41 | let dd = &[u32]::clone(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:19:8 [INFO] [stderr] | [INFO] [stderr] 19 | if command.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `command.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | / match item { [INFO] [stderr] 52 | | &ImageCollectionItem::ImageItem(ref img) => println!("{}, image", img.get_display_name()), [INFO] [stderr] 53 | | &ImageCollectionItem::ImageList(ref ilst) => println!("{}, collection", ilst.get_display_name()) [INFO] [stderr] 54 | | }; [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] 51 | match *item { [INFO] [stderr] 52 | ImageCollectionItem::ImageItem(ref img) => println!("{}, image", img.get_display_name()), [INFO] [stderr] 53 | ImageCollectionItem::ImageList(ref ilst) => println!("{}, collection", ilst.get_display_name()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `oximage`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3e87f13c124153136796fb31f265bce549395aa6c6ba327eb522c158c51e2bdc"` [INFO] running `"docker" "rm" "-f" "3e87f13c124153136796fb31f265bce549395aa6c6ba327eb522c158c51e2bdc"` [INFO] [stdout] 3e87f13c124153136796fb31f265bce549395aa6c6ba327eb522c158c51e2bdc