[INFO] updating cached repository ascii-dresden/asciii [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ascii-dresden/asciii [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ascii-dresden/asciii" "work/ex/clippy-test-run/sources/stable/gh/ascii-dresden/asciii"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ascii-dresden/asciii'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ascii-dresden/asciii" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ascii-dresden/asciii"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ascii-dresden/asciii'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e5debdadc0f6faed0b454fa0a69e5d07b0005260 [INFO] sha for GitHub repo ascii-dresden/asciii: e5debdadc0f6faed0b454fa0a69e5d07b0005260 [INFO] validating manifest of ascii-dresden/asciii 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 ascii-dresden/asciii 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 ascii-dresden/asciii [INFO] finished frobbing ascii-dresden/asciii [INFO] frobbed toml for ascii-dresden/asciii written to work/ex/clippy-test-run/sources/stable/gh/ascii-dresden/asciii/Cargo.toml [INFO] started frobbing ascii-dresden/asciii [INFO] finished frobbing ascii-dresden/asciii [INFO] frobbed toml for ascii-dresden/asciii written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ascii-dresden/asciii/Cargo.toml [INFO] crate ascii-dresden/asciii 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 ascii-dresden/asciii 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/ascii-dresden/asciii:/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] e6c3ea379f5269b97b7f676a01cdd5b45b15862fcb2c07bedc9b443402f55e93 [INFO] running `"docker" "start" "-a" "e6c3ea379f5269b97b7f676a01cdd5b45b15862fcb2c07bedc9b443402f55e93"` [INFO] [stderr] Checking enum_derive v0.1.7 [INFO] [stderr] Checking custom_derive v0.1.7 [INFO] [stderr] Compiling regex-syntax v0.5.6 [INFO] [stderr] Checking crowbook-intl-runtime v0.1.0 [INFO] [stderr] Compiling num-integer v0.1.39 [INFO] [stderr] Checking serde_test v1.0.80 [INFO] [stderr] Compiling libgit2-sys v0.7.10 [INFO] [stderr] Checking prettytable-rs v0.7.0 [INFO] [stderr] Checking icalendar v0.3.1 [INFO] [stderr] Checking claude v0.3.0 [INFO] [stderr] Checking handlebars v1.1.0 [INFO] [stderr] Compiling chrono v0.4.6 [INFO] [stderr] Checking bill v0.3.0 [INFO] [stderr] Checking linked-hash-map v0.5.1 [INFO] [stderr] Checking yaml-rust v0.4.2 [INFO] [stderr] Checking serde_yaml v0.8.7 [INFO] [stderr] Compiling regex v0.2.11 [INFO] [stderr] Compiling crowbook-intl v0.2.1 [INFO] [stderr] Compiling asciii v3.4.0 (/opt/crater/workdir) [INFO] [stderr] Checking git2 v0.7.5 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/document_export/mod.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | document: document, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `document` [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/document_export/mod.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | document: document, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `document` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/storage/tests.rs:63:23 [INFO] [stderr] | [INFO] [stderr] 63 | const TEST_PROJECTS:[&'static str;4] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/storage/realworld.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | const STORAGE: &'static str = "/home/hendrik/ascii/caterings"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/templater.rs:205:21 [INFO] [stderr] | [INFO] [stderr] 205 | const TEMPLATE:&'static str = r##"This tests ##TEST## for ##ATTR## ##SUBJ##."##; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:124:14 [INFO] [stderr] | [INFO] [stderr] 124 | .expect(&format!("Config file {} in field {} does not contain a string value", [INFO] [stderr] | ______________^ [INFO] [stderr] 125 | | DEFAULT_LOCATION, [INFO] [stderr] 126 | | key)) [INFO] [stderr] | |__________________________________^ help: try this: `unwrap_or_else(|| panic!("Config file {} in field {} does not contain a string value", DEFAULT_LOCATION))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:149:14 [INFO] [stderr] | [INFO] [stderr] 149 | .expect(&format!("Config file {} in field {} does not contain a value", [INFO] [stderr] | ______________^ [INFO] [stderr] 150 | | DEFAULT_LOCATION, [INFO] [stderr] 151 | | key)) [INFO] [stderr] | |__________________________________^ help: try this: `unwrap_or_else(|| panic!("Config file {} in field {} does not contain a value", DEFAULT_LOCATION))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:170:14 [INFO] [stderr] | [INFO] [stderr] 170 | .expect(&format!("Config file {} in field {} does not contain a boolean value", [INFO] [stderr] | ______________^ [INFO] [stderr] 171 | | DEFAULT_LOCATION, [INFO] [stderr] 172 | | key)) [INFO] [stderr] | |__________________________________^ help: try this: `unwrap_or_else(|| panic!("Config file {} in field {} does not contain a boolean value", DEFAULT_LOCATION))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/project/spec_yaml.rs:142:20 [INFO] [stderr] | [INFO] [stderr] 142 | for err in paths.into_iter() [INFO] [stderr] | ____________________^ [INFO] [stderr] 143 | | .map(|i| *i) [INFO] [stderr] | |____________________________________^ help: Consider calling the dedicated `cloned` method: `paths.into_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: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/project/spec_yaml.rs:142:26 [INFO] [stderr] | [INFO] [stderr] 142 | for err in paths.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/project/spec_yaml.rs:280:15 [INFO] [stderr] | [INFO] [stderr] 280 | dates.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/project/spec_yaml.rs:302:15 [INFO] [stderr] | [INFO] [stderr] 302 | times.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:124:14 [INFO] [stderr] | [INFO] [stderr] 124 | .expect(&format!("Config file {} in field {} does not contain a string value", [INFO] [stderr] | ______________^ [INFO] [stderr] 125 | | DEFAULT_LOCATION, [INFO] [stderr] 126 | | key)) [INFO] [stderr] | |__________________________________^ help: try this: `unwrap_or_else(|| panic!("Config file {} in field {} does not contain a string value", DEFAULT_LOCATION))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:149:14 [INFO] [stderr] | [INFO] [stderr] 149 | .expect(&format!("Config file {} in field {} does not contain a value", [INFO] [stderr] | ______________^ [INFO] [stderr] 150 | | DEFAULT_LOCATION, [INFO] [stderr] 151 | | key)) [INFO] [stderr] | |__________________________________^ help: try this: `unwrap_or_else(|| panic!("Config file {} in field {} does not contain a value", DEFAULT_LOCATION))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:170:14 [INFO] [stderr] | [INFO] [stderr] 170 | .expect(&format!("Config file {} in field {} does not contain a boolean value", [INFO] [stderr] | ______________^ [INFO] [stderr] 171 | | DEFAULT_LOCATION, [INFO] [stderr] 172 | | key)) [INFO] [stderr] | |__________________________________^ help: try this: `unwrap_or_else(|| panic!("Config file {} in field {} does not contain a boolean value", DEFAULT_LOCATION))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/project/spec_yaml.rs:142:20 [INFO] [stderr] | [INFO] [stderr] 142 | for err in paths.into_iter() [INFO] [stderr] | ____________________^ [INFO] [stderr] 143 | | .map(|i| *i) [INFO] [stderr] | |____________________________________^ help: Consider calling the dedicated `cloned` method: `paths.into_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: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/project/spec_yaml.rs:142:26 [INFO] [stderr] | [INFO] [stderr] 142 | for err in paths.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/project/spec_yaml.rs:280:15 [INFO] [stderr] | [INFO] [stderr] 280 | dates.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/project/spec_yaml.rs:302:15 [INFO] [stderr] | [INFO] [stderr] 302 | times.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:418:45 [INFO] [stderr] | [INFO] [stderr] 418 | fn output_file_exists(&self, bill_type: &BillType) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:425:38 [INFO] [stderr] | [INFO] [stderr] 425 | fn output_file(&self, bill_type: &BillType) -> Option { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:466:41 [INFO] [stderr] | [INFO] [stderr] 466 | fn full_file_path(&self, bill_type: &BillType, ext: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:489:55 [INFO] [stderr] | [INFO] [stderr] 489 | fn write_to_file(&self, content: &str, bill_type: &BillType, ext: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:418:45 [INFO] [stderr] | [INFO] [stderr] 418 | fn output_file_exists(&self, bill_type: &BillType) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:425:38 [INFO] [stderr] | [INFO] [stderr] 425 | fn output_file(&self, bill_type: &BillType) -> Option { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:466:41 [INFO] [stderr] | [INFO] [stderr] 466 | fn full_file_path(&self, bill_type: &BillType, ext: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/project/mod.rs:489:55 [INFO] [stderr] | [INFO] [stderr] 489 | fn write_to_file(&self, content: &str, bill_type: &BillType, ext: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `BillType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: for loop over `projects`, which is a `Result`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/storage/realworld.rs:58:14 [INFO] [stderr] | [INFO] [stderr] 58 | for p in projects{ [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_result)] on by default [INFO] [stderr] = help: consider replacing `for p in projects` with `if let Ok(p) = projects` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_result [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:45:22 [INFO] [stderr] | [INFO] [stderr] 45 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:45:11 [INFO] [stderr] | [INFO] [stderr] 45 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:57:22 [INFO] [stderr] | [INFO] [stderr] 57 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:57:11 [INFO] [stderr] | [INFO] [stderr] 57 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/document_export/mod.rs:113:1 [INFO] [stderr] | [INFO] [stderr] 113 | / fn project_to_doc(project: &Project, config: &ExportConfig) -> Result> { [INFO] [stderr] 114 | | trace!("exporting a document: {:#?}", config); [INFO] [stderr] 115 | | [INFO] [stderr] 116 | | let &ExportConfig { [INFO] [stderr] ... | [INFO] [stderr] 258 | | } [INFO] [stderr] 259 | | } [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/document_export/mod.rs:135:34 [INFO] [stderr] | [INFO] [stderr] 135 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:45:11 [INFO] [stderr] | [INFO] [stderr] 45 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:45:22 [INFO] [stderr] | [INFO] [stderr] 45 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:57:11 [INFO] [stderr] | [INFO] [stderr] 57 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/document_export/mod.rs:57:22 [INFO] [stderr] | [INFO] [stderr] 57 | fn call<'reg: 'rc, 'rc>(&self, h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut Output) -> HelperResult { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/document_export/mod.rs:113:1 [INFO] [stderr] | [INFO] [stderr] 113 | / fn project_to_doc(project: &Project, config: &ExportConfig) -> Result> { [INFO] [stderr] 114 | | trace!("exporting a document: {:#?}", config); [INFO] [stderr] 115 | | [INFO] [stderr] 116 | | let &ExportConfig { [INFO] [stderr] ... | [INFO] [stderr] 258 | | } [INFO] [stderr] 259 | | } [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/document_export/mod.rs:135:34 [INFO] [stderr] | [INFO] [stderr] 135 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `asciii`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: function is never used: `reyaml` [INFO] [stderr] --> examples/write_back.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | fn reyaml(imp: &import::Project) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `list_path_content` [INFO] [stderr] --> tests/lib.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | fn list_path_content(path:&Path) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 126 [INFO] [stderr] --> src/bin/cli/app.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / pub fn with_cli (app_handler:F) where F: Fn(App) { [INFO] [stderr] 9 | | app_handler( [INFO] [stderr] 10 | | App::new("asciii") [INFO] [stderr] 11 | | .author(crate_authors!()) [INFO] [stderr] ... | [INFO] [stderr] 901 | | ); [INFO] [stderr] 902 | | } [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: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/list.rs:18:12 [INFO] [stderr] | [INFO] [stderr] 18 | Ok(list_templates()?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 18 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/list.rs:20:12 [INFO] [stderr] | [INFO] [stderr] 20 | Ok(list_years()?) [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 20 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/list.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 22 | Ok(list_computed_fields()?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 22 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/list.rs:78:12 [INFO] [stderr] | [INFO] [stderr] 78 | Ok(if matches.is_present("broken") { [INFO] [stderr] | ____________^ [INFO] [stderr] 79 | | list_broken_projects(dir)? // XXX Broken [INFO] [stderr] 80 | | } else { [INFO] [stderr] 81 | | list_projects(dir, &list_config)? [INFO] [stderr] 82 | | }) [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 78 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/show.rs:122:8 [INFO] [stderr] | [INFO] [stderr] 122 | Ok(path(matches, |path| { [INFO] [stderr] | ________^ [INFO] [stderr] 123 | | println!("{}", path.display()); [INFO] [stderr] 124 | | Ok(()) [INFO] [stderr] 125 | | })?) [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 122 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:48:10 [INFO] [stderr] | [INFO] [stderr] 48 | .or(CONFIG.get("template").unwrap().as_str()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| CONFIG.get("template").unwrap().as_str())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:88:1 [INFO] [stderr] | [INFO] [stderr] 88 | / fn matches_to_selection<'a>(matches: &'a ArgMatches) -> StorageSelection { [INFO] [stderr] 89 | | let (search_terms, dir) = matches_to_search(matches); [INFO] [stderr] 90 | | StorageSelection::DirAndSearch(dir, search_terms.into_iter().map(ToOwned::to_owned).collect()) [INFO] [stderr] 91 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:93:1 [INFO] [stderr] | [INFO] [stderr] 93 | / fn matches_to_dir<'a>(matches: &'a ArgMatches) -> StorageDir { [INFO] [stderr] 94 | | if matches.is_present("archive"){ [INFO] [stderr] 95 | | let archive_year = matches.value_of("archive") [INFO] [stderr] 96 | | .and_then(|y|y.parse::().ok()) [INFO] [stderr] ... | [INFO] [stderr] 114 | | else { StorageDir::Working } [INFO] [stderr] 115 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:97:40 [INFO] [stderr] | [INFO] [stderr] 97 | .unwrap_or(Utc::today().year()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Utc::today().year())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:104:32 [INFO] [stderr] | [INFO] [stderr] 104 | .unwrap_or(Utc::today().year()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Utc::today().year())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:169:26 [INFO] [stderr] | [INFO] [stderr] 169 | .or( CONFIG.get("user.editor") [INFO] [stderr] | __________________________^ [INFO] [stderr] 170 | | .and_then(|e|e.as_str())); [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 169 | .or_else(|| CONFIG.get("user.editor") [INFO] [stderr] 170 | .and_then(|e|e.as_str())); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:191:24 [INFO] [stderr] | [INFO] [stderr] 191 | .unwrap_or(Local::now().year()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Local::now().year())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:206:10 [INFO] [stderr] | [INFO] [stderr] 206 | .or(CONFIG.get("user/editor") [INFO] [stderr] | __________^ [INFO] [stderr] 207 | | .and_then(|e| e.as_str())); [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 206 | .or_else(|| CONFIG.get("user/editor") [INFO] [stderr] 207 | .and_then(|e| e.as_str())); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:285:10 [INFO] [stderr] | [INFO] [stderr] 285 | .or(CONFIG.get("user/editor") [INFO] [stderr] | __________^ [INFO] [stderr] 286 | | .and_then(|e| e.as_str())); [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 285 | .or_else(|| CONFIG.get("user/editor") [INFO] [stderr] 286 | .and_then(|e| e.as_str())); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:313:8 [INFO] [stderr] | [INFO] [stderr] 313 | Ok(actions::with_projects(dir, &search_terms, |project| { [INFO] [stderr] | ________^ [INFO] [stderr] 314 | | println!("{}: {}", project.short_desc(), project.empty_fields().join(", ")); [INFO] [stderr] 315 | | if !project.empty_fields().contains(&field) { [INFO] [stderr] 316 | | return Err(format!("{:?} was not found in {}", field, project.short_desc()).into()); [INFO] [stderr] ... | [INFO] [stderr] 324 | | } [INFO] [stderr] 325 | | })?) [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 313 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:342:8 [INFO] [stderr] | [INFO] [stderr] 342 | Ok(actions::spec()?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 342 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:404:12 [INFO] [stderr] | [INFO] [stderr] 404 | Ok(document_export::projects_to_doc(config)?) // TODO if-let this TODO should return Result [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 404 | Ok(()) // TODO if-let this TODO should return Result [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:418:12 [INFO] [stderr] | [INFO] [stderr] 418 | Ok(actions::delete_project_confirmation(dir, &search_terms)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 418 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:463:26 [INFO] [stderr] | [INFO] [stderr] 463 | .or(CONFIG.get("user.editor") [INFO] [stderr] | __________________________^ [INFO] [stderr] 464 | | .and_then(|e|e.as_str())); [INFO] [stderr] | |___________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 463 | .or_else(|| CONFIG.get("user.editor") [INFO] [stderr] 464 | .and_then(|e|e.as_str())); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:601:12 [INFO] [stderr] | [INFO] [stderr] 601 | Ok(open::that(path).map(|_| ())?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 601 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/cli/subcommands/mod.rs:619:5 [INFO] [stderr] | [INFO] [stderr] 619 | / if m.is_present("search_term") { [INFO] [stderr] 620 | | let storage = setup::()?; [INFO] [stderr] 621 | | let selection = matches_to_selection(m); [INFO] [stderr] 622 | | let projects = storage.open_projects(&selection)?; [INFO] [stderr] ... | [INFO] [stderr] 676 | | action(&path)? [INFO] [stderr] 677 | | }) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 619 | ()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "e6c3ea379f5269b97b7f676a01cdd5b45b15862fcb2c07bedc9b443402f55e93"` [INFO] running `"docker" "rm" "-f" "e6c3ea379f5269b97b7f676a01cdd5b45b15862fcb2c07bedc9b443402f55e93"` [INFO] [stdout] e6c3ea379f5269b97b7f676a01cdd5b45b15862fcb2c07bedc9b443402f55e93