[INFO] updating cached repository hadrien-psydk/fixsrt [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/hadrien-psydk/fixsrt [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/hadrien-psydk/fixsrt" "work/ex/clippy-test-run/sources/stable/gh/hadrien-psydk/fixsrt"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/hadrien-psydk/fixsrt'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/hadrien-psydk/fixsrt" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hadrien-psydk/fixsrt"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hadrien-psydk/fixsrt'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 76556c0b13ffea95040ab2e9f8e8b7ce2e8c0784 [INFO] sha for GitHub repo hadrien-psydk/fixsrt: 76556c0b13ffea95040ab2e9f8e8b7ce2e8c0784 [INFO] validating manifest of hadrien-psydk/fixsrt 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 hadrien-psydk/fixsrt 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 hadrien-psydk/fixsrt [INFO] finished frobbing hadrien-psydk/fixsrt [INFO] frobbed toml for hadrien-psydk/fixsrt written to work/ex/clippy-test-run/sources/stable/gh/hadrien-psydk/fixsrt/Cargo.toml [INFO] started frobbing hadrien-psydk/fixsrt [INFO] finished frobbing hadrien-psydk/fixsrt [INFO] frobbed toml for hadrien-psydk/fixsrt written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hadrien-psydk/fixsrt/Cargo.toml [INFO] crate hadrien-psydk/fixsrt 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 hadrien-psydk/fixsrt against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hadrien-psydk/fixsrt:/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 -Dclippy::into_iter_on_array" "-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] 1d1bf7ab5fdac7aeab49b8437c03abe518828a20943b22801c1cc59def12b096 [INFO] running `"docker" "start" "-a" "1d1bf7ab5fdac7aeab49b8437c03abe518828a20943b22801c1cc59def12b096"` [INFO] [stderr] Checking fixsrt v16.1.0-beta.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/workfile.rs:25:4 [INFO] [stderr] | [INFO] [stderr] 25 | work_file_path: work_file_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `work_file_path` [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/workfile.rs:25:4 [INFO] [stderr] | [INFO] [stderr] 25 | work_file_path: work_file_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `work_file_path` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/workfile.rs:35:3 [INFO] [stderr] | [INFO] [stderr] 35 | ret [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/workfile.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | let ret = match self.file { [INFO] [stderr] | ___________________^ [INFO] [stderr] 32 | | Some(ref mut some_file) => some_file.write(buf), [INFO] [stderr] 33 | | None => Err( Error::new(ErrorKind::Other, "oops") ) [INFO] [stderr] 34 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Wants` [INFO] [stderr] --> src/srt.rs:54:2 [INFO] [stderr] | [INFO] [stderr] 54 | enum State { [INFO] [stderr] | _____^ [INFO] [stderr] 55 | | WantsNum, [INFO] [stderr] 56 | | WantsDuration, [INFO] [stderr] 57 | | WantsFirstText, [INFO] [stderr] 58 | | WantsFirstTextAgain, [INFO] [stderr] 59 | | WantsFollowingText [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/srt.rs:165:10 [INFO] [stderr] | [INFO] [stderr] 165 | else { [INFO] [stderr] | ______________________^ [INFO] [stderr] 166 | | if subtitle.push_text(line) { [INFO] [stderr] 167 | | return Err(format!("Too much text at line {} sub {}", [INFO] [stderr] 168 | | line_num, subtitle.num)); [INFO] [stderr] 169 | | } [INFO] [stderr] 170 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 165 | else if subtitle.push_text(line) { [INFO] [stderr] 166 | return Err(format!("Too much text at line {} sub {}", [INFO] [stderr] 167 | line_num, subtitle.num)); [INFO] [stderr] 168 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/srt.rs:400:2 [INFO] [stderr] | [INFO] [stderr] 400 | return parse_srt(&content_str); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `parse_srt(&content_str)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/srt.rs:460:18 [INFO] [stderr] | [INFO] [stderr] 460 | const TEN_POW: &'static [u32] = &[1, 10, 100, 1000]; [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u32]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/txt_rep.rs:4:2 [INFO] [stderr] | [INFO] [stderr] 4 | return c == ' ' || c == '\u{A0}' [INFO] [stderr] | _____^ [INFO] [stderr] 5 | | || c == '.' || c == ',' [INFO] [stderr] 6 | | || c == '"' || c == '-'; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 4 | c == ' ' || c == '\u{A0}' [INFO] [stderr] 5 | || c == '.' || c == ',' [INFO] [stderr] 6 | || c == '"' || c == '-' [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/txt_rep.rs:10:2 [INFO] [stderr] | [INFO] [stderr] 10 | return !is_separator(c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `!is_separator(c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/txt_rep.rs:14:2 [INFO] [stderr] | [INFO] [stderr] 14 | return c.is_digit(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `c.is_digit(10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/rules.rs:1:22 [INFO] [stderr] | [INFO] [stderr] 1 | pub const RULES_FR: &'static [(&'static str, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^------------------------------- help: consider removing `'static`: `&[(&'static str, &'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/rules.rs:1:33 [INFO] [stderr] | [INFO] [stderr] 1 | pub const RULES_FR: &'static [(&'static str, &'static str)] = &[ [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/rules.rs:1:47 [INFO] [stderr] | [INFO] [stderr] 1 | pub const RULES_FR: &'static [(&'static str, &'static str)] = &[ [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/rules.rs:232:22 [INFO] [stderr] | [INFO] [stderr] 232 | pub const RULES_EN: &'static [(&'static str, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^------------------------------- help: consider removing `'static`: `&[(&'static str, &'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/rules.rs:232:33 [INFO] [stderr] | [INFO] [stderr] 232 | pub const RULES_EN: &'static [(&'static str, &'static str)] = &[ [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/rules.rs:232:47 [INFO] [stderr] | [INFO] [stderr] 232 | pub const RULES_EN: &'static [(&'static str, &'static str)] = &[ [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/main.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/workfile.rs:35:3 [INFO] [stderr] | [INFO] [stderr] 35 | ret [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/workfile.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | let ret = match self.file { [INFO] [stderr] | ___________________^ [INFO] [stderr] 32 | | Some(ref mut some_file) => some_file.write(buf), [INFO] [stderr] 33 | | None => Err( Error::new(ErrorKind::Other, "oops") ) [INFO] [stderr] 34 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Wants` [INFO] [stderr] --> src/srt.rs:54:2 [INFO] [stderr] | [INFO] [stderr] 54 | enum State { [INFO] [stderr] | _____^ [INFO] [stderr] 55 | | WantsNum, [INFO] [stderr] 56 | | WantsDuration, [INFO] [stderr] 57 | | WantsFirstText, [INFO] [stderr] 58 | | WantsFirstTextAgain, [INFO] [stderr] 59 | | WantsFollowingText [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/srt.rs:165:10 [INFO] [stderr] | [INFO] [stderr] 165 | else { [INFO] [stderr] | ______________________^ [INFO] [stderr] 166 | | if subtitle.push_text(line) { [INFO] [stderr] 167 | | return Err(format!("Too much text at line {} sub {}", [INFO] [stderr] 168 | | line_num, subtitle.num)); [INFO] [stderr] 169 | | } [INFO] [stderr] 170 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 165 | else if subtitle.push_text(line) { [INFO] [stderr] 166 | return Err(format!("Too much text at line {} sub {}", [INFO] [stderr] 167 | line_num, subtitle.num)); [INFO] [stderr] 168 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/srt.rs:400:2 [INFO] [stderr] | [INFO] [stderr] 400 | return parse_srt(&content_str); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `parse_srt(&content_str)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/srt.rs:460:18 [INFO] [stderr] | [INFO] [stderr] 460 | const TEN_POW: &'static [u32] = &[1, 10, 100, 1000]; [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u32]` [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: this is a decimal constant [INFO] [stderr] --> src/srt.rs:598:41 [INFO] [stderr] | [INFO] [stderr] 598 | assert_eq!(parse_srt_time("0.2"), Some(0_200)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 598 | assert_eq!(parse_srt_time("0.2"), Some(200)); [INFO] [stderr] | ^^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 598 | assert_eq!(parse_srt_time("0.2"), Some(0o200)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/srt.rs:599:42 [INFO] [stderr] | [INFO] [stderr] 599 | assert_eq!(parse_srt_time("0.23"), Some(0_230)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 599 | assert_eq!(parse_srt_time("0.23"), Some(230)); [INFO] [stderr] | ^^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 599 | assert_eq!(parse_srt_time("0.23"), Some(0o230)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/srt.rs:600:43 [INFO] [stderr] | [INFO] [stderr] 600 | assert_eq!(parse_srt_time("0.234"), Some(0_234)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 600 | assert_eq!(parse_srt_time("0.234"), Some(234)); [INFO] [stderr] | ^^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 600 | assert_eq!(parse_srt_time("0.234"), Some(0o234)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/srt.rs:608:45 [INFO] [stderr] | [INFO] [stderr] 608 | assert_eq!(parse_srt_time("-0.100"), Some(-0_100)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 608 | assert_eq!(parse_srt_time("-0.100"), Some(-100)); [INFO] [stderr] | ^^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 608 | assert_eq!(parse_srt_time("-0.100"), Some(-0o100)); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/txt_rep.rs:4:2 [INFO] [stderr] | [INFO] [stderr] 4 | return c == ' ' || c == '\u{A0}' [INFO] [stderr] | _____^ [INFO] [stderr] 5 | | || c == '.' || c == ',' [INFO] [stderr] 6 | | || c == '"' || c == '-'; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 4 | c == ' ' || c == '\u{A0}' [INFO] [stderr] 5 | || c == '.' || c == ',' [INFO] [stderr] 6 | || c == '"' || c == '-' [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/txt_rep.rs:10:2 [INFO] [stderr] | [INFO] [stderr] 10 | return !is_separator(c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `!is_separator(c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/txt_rep.rs:14:2 [INFO] [stderr] | [INFO] [stderr] 14 | return c.is_digit(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `c.is_digit(10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/rules.rs:1:22 [INFO] [stderr] | [INFO] [stderr] 1 | pub const RULES_FR: &'static [(&'static str, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^------------------------------- help: consider removing `'static`: `&[(&'static str, &'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/rules.rs:1:33 [INFO] [stderr] | [INFO] [stderr] 1 | pub const RULES_FR: &'static [(&'static str, &'static str)] = &[ [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/rules.rs:1:47 [INFO] [stderr] | [INFO] [stderr] 1 | pub const RULES_FR: &'static [(&'static str, &'static str)] = &[ [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/rules.rs:232:22 [INFO] [stderr] | [INFO] [stderr] 232 | pub const RULES_EN: &'static [(&'static str, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^------------------------------- help: consider removing `'static`: `&[(&'static str, &'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/rules.rs:232:33 [INFO] [stderr] | [INFO] [stderr] 232 | pub const RULES_EN: &'static [(&'static str, &'static str)] = &[ [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/rules.rs:232:47 [INFO] [stderr] | [INFO] [stderr] 232 | pub const RULES_EN: &'static [(&'static str, &'static str)] = &[ [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/main.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/srt.rs:368:3 [INFO] [stderr] | [INFO] [stderr] 368 | if content.len() >= 3 && content[0..3] == BOM { [INFO] [stderr] | _________^ [INFO] [stderr] 369 | | true [INFO] [stderr] 370 | | } [INFO] [stderr] 371 | | else { [INFO] [stderr] 372 | | false [INFO] [stderr] 373 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `content.len() >= 3 && content[0..3] == BOM` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/srt.rs:404:34 [INFO] [stderr] | [INFO] [stderr] 404 | pub fn save_subtitles(subtitles: &Vec, file_path: &str) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Subtitle]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/srt.rs:508:24 [INFO] [stderr] | [INFO] [stderr] 508 | parsed_frags[i] = if frags[i].len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `frags[i].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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:548:19 [INFO] [stderr] | [INFO] [stderr] 548 | let mut r: i64 = hours as i64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(hours)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:549:7 [INFO] [stderr] | [INFO] [stderr] 549 | r += (hours * 60 * 60) as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(hours * 60 * 60)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:550:7 [INFO] [stderr] | [INFO] [stderr] 550 | r += (minutes * 60) as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(minutes * 60)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:551:7 [INFO] [stderr] | [INFO] [stderr] 551 | r += seconds as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(seconds)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:552:7 [INFO] [stderr] | [INFO] [stderr] 552 | r *= TEN_POW[3] as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(TEN_POW[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] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:553:7 [INFO] [stderr] | [INFO] [stderr] 553 | r += milliseconds as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(milliseconds)` [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 i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:559:10 [INFO] [stderr] | [INFO] [stderr] 559 | if !(std::i32::MIN as i64 <= r && r <= std::i32::MAX as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(std::i32::MIN)` [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 i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:559:44 [INFO] [stderr] | [INFO] [stderr] 559 | if !(std::i32::MIN as i64 <= r && r <= std::i32::MAX as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(std::i32::MAX)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/srt.rs:574:2 [INFO] [stderr] | [INFO] [stderr] 574 | tmp = tmp % (60 * 60); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tmp %= (60 * 60)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/srt.rs:616:40 [INFO] [stderr] | [INFO] [stderr] 616 | pub fn should_keep_last_sub(subtitles: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Subtitle]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/srt.rs:632:52 [INFO] [stderr] | [INFO] [stderr] 632 | else if (last_time - prelast_time) > 5*60*60*1000 { [INFO] [stderr] | _______________________________________________________^ [INFO] [stderr] 633 | | // Last is very large, do not keep it [INFO] [stderr] 634 | | false [INFO] [stderr] 635 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/srt.rs:628:30 [INFO] [stderr] | [INFO] [stderr] 628 | if last_time < prelast_time { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 629 | | // Last is going backward, do not keep it [INFO] [stderr] 630 | | false [INFO] [stderr] 631 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/srt.rs:632:7 [INFO] [stderr] | [INFO] [stderr] 632 | else if (last_time - prelast_time) > 5*60*60*1000 { [INFO] [stderr] | __________^ [INFO] [stderr] 633 | | // Last is very large, do not keep it [INFO] [stderr] 634 | | false [INFO] [stderr] 635 | | } [INFO] [stderr] 636 | | else { [INFO] [stderr] 637 | | true [INFO] [stderr] 638 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `!((last_time - prelast_time) > 5*60*60*1000)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:43:21 [INFO] [stderr] | [INFO] [stderr] 43 | if what.ends_with("*") { [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:46:26 [INFO] [stderr] | [INFO] [stderr] 46 | else if what.ends_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:49:26 [INFO] [stderr] | [INFO] [stderr] 49 | else if what.ends_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:58:37 [INFO] [stderr] | [INFO] [stderr] 58 | if what_no_star_after.starts_with("*") { [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:61:42 [INFO] [stderr] | [INFO] [stderr] 61 | else if what_no_star_after.starts_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:64:42 [INFO] [stderr] | [INFO] [stderr] 64 | else if what_no_star_after.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `sub_index` is used as a loop counter. Consider using `for (sub_index, item) in subtitles.iter_mut().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:48:18 [INFO] [stderr] | [INFO] [stderr] 48 | for subtitle in subtitles.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `fixsrt`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: the function has a cyclomatic complexity of 40 [INFO] [stderr] --> src/srt.rs:185:1 [INFO] [stderr] | [INFO] [stderr] 185 | / fn test_parse_srt() { [INFO] [stderr] 186 | | /////////////////////////////////// [INFO] [stderr] 187 | | // Unexpected empty line in text [INFO] [stderr] 188 | | { [INFO] [stderr] ... | [INFO] [stderr] 305 | | } [INFO] [stderr] 306 | | } [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: useless use of `format!` [INFO] [stderr] --> src/srt.rs:198:29 [INFO] [stderr] | [INFO] [stderr] 198 | assert!(subs_res.is_ok(), format!("{}", subs_res.err().unwrap()) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `subs_res.err().unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/srt.rs:216:29 [INFO] [stderr] | [INFO] [stderr] 216 | assert!(subs_res.is_ok(), format!("{}", subs_res.err().unwrap()) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `subs_res.err().unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/srt.rs:233:29 [INFO] [stderr] | [INFO] [stderr] 233 | assert!(subs_res.is_ok(), format!("{}", subs_res.err().unwrap()) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `subs_res.err().unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/srt.rs:252:29 [INFO] [stderr] | [INFO] [stderr] 252 | assert!(subs_res.is_ok(), format!("{}", subs_res.err().unwrap()) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `subs_res.err().unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/srt.rs:274:29 [INFO] [stderr] | [INFO] [stderr] 274 | assert!(subs_res.is_ok(), format!("{}", subs_res.err().unwrap()) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `subs_res.err().unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/srt.rs:296:29 [INFO] [stderr] | [INFO] [stderr] 296 | assert!(subs_res.is_ok(), format!("{}", subs_res.err().unwrap()) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `subs_res.err().unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/srt.rs:368:3 [INFO] [stderr] | [INFO] [stderr] 368 | if content.len() >= 3 && content[0..3] == BOM { [INFO] [stderr] | _________^ [INFO] [stderr] 369 | | true [INFO] [stderr] 370 | | } [INFO] [stderr] 371 | | else { [INFO] [stderr] 372 | | false [INFO] [stderr] 373 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `content.len() >= 3 && content[0..3] == BOM` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/srt.rs:404:34 [INFO] [stderr] | [INFO] [stderr] 404 | pub fn save_subtitles(subtitles: &Vec, file_path: &str) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Subtitle]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/srt.rs:508:24 [INFO] [stderr] | [INFO] [stderr] 508 | parsed_frags[i] = if frags[i].len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `frags[i].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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:548:19 [INFO] [stderr] | [INFO] [stderr] 548 | let mut r: i64 = hours as i64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(hours)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:549:7 [INFO] [stderr] | [INFO] [stderr] 549 | r += (hours * 60 * 60) as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(hours * 60 * 60)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:550:7 [INFO] [stderr] | [INFO] [stderr] 550 | r += (minutes * 60) as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(minutes * 60)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:551:7 [INFO] [stderr] | [INFO] [stderr] 551 | r += seconds as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(seconds)` [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 u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:552:7 [INFO] [stderr] | [INFO] [stderr] 552 | r *= TEN_POW[3] as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(TEN_POW[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] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:553:7 [INFO] [stderr] | [INFO] [stderr] 553 | r += milliseconds as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(milliseconds)` [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 i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:559:10 [INFO] [stderr] | [INFO] [stderr] 559 | if !(std::i32::MIN as i64 <= r && r <= std::i32::MAX as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(std::i32::MIN)` [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 i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/srt.rs:559:44 [INFO] [stderr] | [INFO] [stderr] 559 | if !(std::i32::MIN as i64 <= r && r <= std::i32::MAX as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(std::i32::MAX)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/srt.rs:574:2 [INFO] [stderr] | [INFO] [stderr] 574 | tmp = tmp % (60 * 60); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tmp %= (60 * 60)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `60_000` [INFO] [stderr] --> src/srt.rs:604:46 [INFO] [stderr] | [INFO] [stderr] 604 | assert_eq!(parse_srt_time("01:14,28"), Some(1*60_000 + 14_280)); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/srt.rs:616:40 [INFO] [stderr] | [INFO] [stderr] 616 | pub fn should_keep_last_sub(subtitles: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Subtitle]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/srt.rs:632:52 [INFO] [stderr] | [INFO] [stderr] 632 | else if (last_time - prelast_time) > 5*60*60*1000 { [INFO] [stderr] | _______________________________________________________^ [INFO] [stderr] 633 | | // Last is very large, do not keep it [INFO] [stderr] 634 | | false [INFO] [stderr] 635 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/srt.rs:628:30 [INFO] [stderr] | [INFO] [stderr] 628 | if last_time < prelast_time { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 629 | | // Last is going backward, do not keep it [INFO] [stderr] 630 | | false [INFO] [stderr] 631 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/srt.rs:632:7 [INFO] [stderr] | [INFO] [stderr] 632 | else if (last_time - prelast_time) > 5*60*60*1000 { [INFO] [stderr] | __________^ [INFO] [stderr] 633 | | // Last is very large, do not keep it [INFO] [stderr] 634 | | false [INFO] [stderr] 635 | | } [INFO] [stderr] 636 | | else { [INFO] [stderr] 637 | | true [INFO] [stderr] 638 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `!((last_time - prelast_time) > 5*60*60*1000)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/srt.rs:656:28 [INFO] [stderr] | [INFO] [stderr] 656 | assert!(subs_res.is_ok(), format!("{}", subs_res.err().unwrap()) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `subs_res.err().unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:43:21 [INFO] [stderr] | [INFO] [stderr] 43 | if what.ends_with("*") { [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:46:26 [INFO] [stderr] | [INFO] [stderr] 46 | else if what.ends_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:49:26 [INFO] [stderr] | [INFO] [stderr] 49 | else if what.ends_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:58:37 [INFO] [stderr] | [INFO] [stderr] 58 | if what_no_star_after.starts_with("*") { [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:61:42 [INFO] [stderr] | [INFO] [stderr] 61 | else if what_no_star_after.starts_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/txt_rep.rs:64:42 [INFO] [stderr] | [INFO] [stderr] 64 | else if what_no_star_after.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/txt_rep.rs:172:1 [INFO] [stderr] | [INFO] [stderr] 172 | / fn test_replace_one_fr() { [INFO] [stderr] 173 | | assert_eq!(replace_one_fr("Ca va"), "Ça va"); [INFO] [stderr] 174 | | assert_eq!(replace_one_fr("Ca."), "Ça."); [INFO] [stderr] 175 | | assert_eq!(replace_one_fr("Ca"), "Ça"); [INFO] [stderr] ... | [INFO] [stderr] 202 | | assert_eq!(replace_one_fr("caca"), "caca"); [INFO] [stderr] 203 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [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: the variable `sub_index` is used as a loop counter. Consider using `for (sub_index, item) in subtitles.iter_mut().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:48:18 [INFO] [stderr] | [INFO] [stderr] 48 | for subtitle in subtitles.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `fixsrt`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "1d1bf7ab5fdac7aeab49b8437c03abe518828a20943b22801c1cc59def12b096"` [INFO] running `"docker" "rm" "-f" "1d1bf7ab5fdac7aeab49b8437c03abe518828a20943b22801c1cc59def12b096"` [INFO] [stdout] 1d1bf7ab5fdac7aeab49b8437c03abe518828a20943b22801c1cc59def12b096