[INFO] crate iata_bcbp 0.1.1 is already in cache [INFO] extracting crate iata_bcbp 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/iata_bcbp/0.1.1 [INFO] extracting crate iata_bcbp 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/iata_bcbp/0.1.1 [INFO] validating manifest of iata_bcbp-0.1.1 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 iata_bcbp-0.1.1 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 iata_bcbp-0.1.1 [INFO] finished frobbing iata_bcbp-0.1.1 [INFO] frobbed toml for iata_bcbp-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/iata_bcbp/0.1.1/Cargo.toml [INFO] started frobbing iata_bcbp-0.1.1 [INFO] finished frobbing iata_bcbp-0.1.1 [INFO] frobbed toml for iata_bcbp-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/iata_bcbp/0.1.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting iata_bcbp-0.1.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/iata_bcbp/0.1.1:/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] 3202ab2b127517ca2aca6a17dea714661dc5b4f4d11ee5216561583ac49733d5 [INFO] running `"docker" "start" "-a" "3202ab2b127517ca2aca6a17dea714661dc5b4f4d11ee5216561583ac49733d5"` [INFO] [stderr] Checking iata_bcbp v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/de/parser.rs:198:17 [INFO] [stderr] | [INFO] [stderr] 198 | / if conditional_item_scanner.remaining_len() > 0 { [INFO] [stderr] 199 | | if conditional_item_scanner.scan_str_field(field::Field::BeginningOfVersionNumber)? != ">" { [INFO] [stderr] 200 | | return Err(Error::InvalidStartOfVersionNumber); [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [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] 198 | if conditional_item_scanner.remaining_len() > 0 && conditional_item_scanner.scan_str_field(field::Field::BeginningOfVersionNumber)? != ">" { [INFO] [stderr] 199 | return Err(Error::InvalidStartOfVersionNumber); [INFO] [stderr] 200 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/de/parser.rs:198:17 [INFO] [stderr] | [INFO] [stderr] 198 | / if conditional_item_scanner.remaining_len() > 0 { [INFO] [stderr] 199 | | if conditional_item_scanner.scan_str_field(field::Field::BeginningOfVersionNumber)? != ">" { [INFO] [stderr] 200 | | return Err(Error::InvalidStartOfVersionNumber); [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [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] 198 | if conditional_item_scanner.remaining_len() > 0 && conditional_item_scanner.scan_str_field(field::Field::BeginningOfVersionNumber)? != ">" { [INFO] [stderr] 199 | return Err(Error::InvalidStartOfVersionNumber); [INFO] [stderr] 200 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/bcbp/mod.rs:43:35 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn from_city_airport_code(&self) -> &str { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: item `de::field::Field` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/de/field.rs:98:1 [INFO] [stderr] | [INFO] [stderr] 98 | / impl Field { [INFO] [stderr] 99 | | [INFO] [stderr] 100 | | /// The required length of the field. If zero, the field may be arbitrarily long. [INFO] [stderr] 101 | | pub fn len(self) -> usize { [INFO] [stderr] ... | [INFO] [stderr] 240 | | [INFO] [stderr] 241 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/de/parser.rs:93:44 [INFO] [stderr] | [INFO] [stderr] 93 | self.scan_str_field(field).map(|result| Some(result)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/de/parser.rs:132:45 [INFO] [stderr] | [INFO] [stderr] 132 | self.scan_char_field(field).map(|c| Some(c)) [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/error.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / match self { [INFO] [stderr] 37 | | &Error::UnexpectedEndOfInput(field) => [INFO] [stderr] 38 | | write!(f, "unexpected end-of-input before {}", field), [INFO] [stderr] 39 | | &Error::SubsectionTooLong => [INFO] [stderr] ... | [INFO] [stderr] 52 | | write!(f, "input includes data after a valid boarding pass"), [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 36 | match *self { [INFO] [stderr] 37 | Error::UnexpectedEndOfInput(field) => [INFO] [stderr] 38 | write!(f, "unexpected end-of-input before {}", field), [INFO] [stderr] 39 | Error::SubsectionTooLong => [INFO] [stderr] 40 | write!(f, "subsection too long"), [INFO] [stderr] 41 | Error::ExpectedInteger(field) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/bcbp/mod.rs:43:35 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn from_city_airport_code(&self) -> &str { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: item `de::field::Field` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/de/field.rs:98:1 [INFO] [stderr] | [INFO] [stderr] 98 | / impl Field { [INFO] [stderr] 99 | | [INFO] [stderr] 100 | | /// The required length of the field. If zero, the field may be arbitrarily long. [INFO] [stderr] 101 | | pub fn len(self) -> usize { [INFO] [stderr] ... | [INFO] [stderr] 240 | | [INFO] [stderr] 241 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/de/parser.rs:93:44 [INFO] [stderr] | [INFO] [stderr] 93 | self.scan_str_field(field).map(|result| Some(result)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/de/parser.rs:132:45 [INFO] [stderr] | [INFO] [stderr] 132 | self.scan_char_field(field).map(|c| Some(c)) [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/error.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / match self { [INFO] [stderr] 37 | | &Error::UnexpectedEndOfInput(field) => [INFO] [stderr] 38 | | write!(f, "unexpected end-of-input before {}", field), [INFO] [stderr] 39 | | &Error::SubsectionTooLong => [INFO] [stderr] ... | [INFO] [stderr] 52 | | write!(f, "input includes data after a valid boarding pass"), [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 36 | match *self { [INFO] [stderr] 37 | Error::UnexpectedEndOfInput(field) => [INFO] [stderr] 38 | write!(f, "unexpected end-of-input before {}", field), [INFO] [stderr] 39 | Error::SubsectionTooLong => [INFO] [stderr] 40 | write!(f, "subsection too long"), [INFO] [stderr] 41 | Error::ExpectedInteger(field) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> tests/real_world.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / fn alaska_boarding_pass() { [INFO] [stderr] 16 | | const PASS_STR: &str = "M1MROZ/MARTIN EXXXXXX SJCLAXAS 3317 207U001A0006 34D>218 VV8207BAS 2502771980993865 AS AS XXXXX55200000000Z29 00010"; [INFO] [stderr] 17 | | let pass_data = Bcbp::from_str(PASS_STR).unwrap(); [INFO] [stderr] 18 | | assert_eq!(pass_data.passenger_name(), "MROZ/MARTIN "); [INFO] [stderr] ... | [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [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: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> tests/real_world.rs:60:1 [INFO] [stderr] | [INFO] [stderr] 60 | / fn air_canada_boarding_pass() { [INFO] [stderr] 61 | | const PASS_STR: &str = "M1Mroz/Martin EXXXXXX YVRYOWAC 0344 211 072>20B0 8203IAC 250140000000000 0AC AC AC000000000 *20000AC 223 14080003068 0B N"; [INFO] [stderr] 62 | | let pass_data = Bcbp::from_str(PASS_STR).unwrap(); [INFO] [stderr] 63 | | assert_eq!(pass_data.passenger_name(), "Mroz/Martin "); [INFO] [stderr] ... | [INFO] [stderr] 101 | | } [INFO] [stderr] 102 | | } [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 function has a cyclomatic complexity of 57 [INFO] [stderr] --> tests/iata_792_b.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | / fn example_2_m2_multiple_legs() { [INFO] [stderr] 41 | | const PASS_STR: &str = "M2DESMARAIS/LUC EABC123 YULFRAAC 0834 226F001A0025 14D>6181WW6225BAC 00141234560032A0141234567890 1AC AC 1234567890123 20KYLX58ZDEF456 FRAGVALH 3664 227C012C0002 12E2A0140987654321 1AC AC 1234567890123 2PCNWQ^164GIWVC5EH7JNT684FVNJ91W2QA4DVN5J8K4F0L0GEQ3DF5TGBN8709HKT5D3DW3GBHFCVHMY7J5T6HFR41W2QA4DVN5J8K4F0L0GE"; [INFO] [stderr] 42 | | let pass_data = Bcbp::from_str(PASS_STR).unwrap(); [INFO] [stderr] 43 | | assert_eq!(pass_data.passenger_name(), "DESMARAIS/LUC "); [INFO] [stderr] ... | [INFO] [stderr] 110 | | assert_eq!(pass_data.security_data().security_data(), Some("GIWVC5EH7JNT684FVNJ91W2QA4DVN5J8K4F0L0GEQ3DF5TGBN8709HKT5D3DW3GBHFCVHMY7J5T6HFR41W2QA4DVN5J8K4F0L0GE")); [INFO] [stderr] 111 | | } [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: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> tests/iata_792_b.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | / fn appendix_b_1_1_lh_home_printed_boarding_pass() { [INFO] [stderr] 115 | | const PASS_STR: &str = "M1TEST/HIDDEN E8OQ6FU FRARLGLH 4010 012C004D0001 35C>2180WW6012BLH 2922023642241060 LH *30600000K09 "; [INFO] [stderr] 116 | | let pass_data = Bcbp::from_str(PASS_STR).unwrap(); [INFO] [stderr] 117 | | assert_eq!(pass_data.passenger_name(), "TEST/HIDDEN "); [INFO] [stderr] ... | [INFO] [stderr] 157 | | } [INFO] [stderr] 158 | | } [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 function has a cyclomatic complexity of 34 [INFO] [stderr] --> tests/iata_792_b.rs:191:1 [INFO] [stderr] | [INFO] [stderr] 191 | / fn appendix_b_2_1_bcbp_printed_at_a_kiosk_ua_ua_kiosk() { [INFO] [stderr] 192 | | const PASS_STR: &str = "M1ASKREN/TEST EA272SL ORDNRTUA 0881 007F002K0303 15C>3180 K6007BUA 2901624760758980 UA UA EY975897 *30600 09 UAG "; [INFO] [stderr] 193 | | let pass_data = Bcbp::from_str(PASS_STR).unwrap(); [INFO] [stderr] 194 | | assert_eq!(pass_data.passenger_name(), "ASKREN/TEST "); [INFO] [stderr] ... | [INFO] [stderr] 234 | | } [INFO] [stderr] 235 | | } [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 function has a cyclomatic complexity of 34 [INFO] [stderr] --> tests/iata_792_b.rs:238:1 [INFO] [stderr] | [INFO] [stderr] 238 | / fn appendix_b_3_1_mobile_bcbp_lh_lufthansa_mobile_bcbp() { [INFO] [stderr] 239 | | const PASS_STR: &str = "M1TEST/HIDDEN E8OQ6FU FRARLGLH 4010 012C004D0001 35C>2180WM6012BLH 2922023642241060 LH *30600000K09 "; [INFO] [stderr] 240 | | let pass_data = Bcbp::from_str(PASS_STR).unwrap(); [INFO] [stderr] 241 | | assert_eq!(pass_data.passenger_name(), "TEST/HIDDEN "); [INFO] [stderr] ... | [INFO] [stderr] 281 | | } [INFO] [stderr] 282 | | } [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] Finished dev [unoptimized + debuginfo] target(s) in 3.58s [INFO] running `"docker" "inspect" "3202ab2b127517ca2aca6a17dea714661dc5b4f4d11ee5216561583ac49733d5"` [INFO] running `"docker" "rm" "-f" "3202ab2b127517ca2aca6a17dea714661dc5b4f4d11ee5216561583ac49733d5"` [INFO] [stdout] 3202ab2b127517ca2aca6a17dea714661dc5b4f4d11ee5216561583ac49733d5