[INFO] updating cached repository torkeldanielsson/fraction_problems_generator [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/torkeldanielsson/fraction_problems_generator [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/torkeldanielsson/fraction_problems_generator" "work/ex/clippy-test-run/sources/stable/gh/torkeldanielsson/fraction_problems_generator"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/torkeldanielsson/fraction_problems_generator'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/torkeldanielsson/fraction_problems_generator" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/torkeldanielsson/fraction_problems_generator"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/torkeldanielsson/fraction_problems_generator'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e942164656ed3f27ab8754a9966ede1470d3fed5 [INFO] sha for GitHub repo torkeldanielsson/fraction_problems_generator: e942164656ed3f27ab8754a9966ede1470d3fed5 [INFO] validating manifest of torkeldanielsson/fraction_problems_generator 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 torkeldanielsson/fraction_problems_generator 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 torkeldanielsson/fraction_problems_generator [INFO] finished frobbing torkeldanielsson/fraction_problems_generator [INFO] frobbed toml for torkeldanielsson/fraction_problems_generator written to work/ex/clippy-test-run/sources/stable/gh/torkeldanielsson/fraction_problems_generator/Cargo.toml [INFO] started frobbing torkeldanielsson/fraction_problems_generator [INFO] finished frobbing torkeldanielsson/fraction_problems_generator [INFO] frobbed toml for torkeldanielsson/fraction_problems_generator written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/torkeldanielsson/fraction_problems_generator/Cargo.toml [INFO] crate torkeldanielsson/fraction_problems_generator 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 torkeldanielsson/fraction_problems_generator 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/torkeldanielsson/fraction_problems_generator:/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] 60f13e14a50444604333da9157ba780d484f1d5dfe5f200e1349f78dc6630b84 [INFO] running `"docker" "start" "-a" "60f13e14a50444604333da9157ba780d484f1d5dfe5f200e1349f78dc6630b84"` [INFO] [stderr] Checking math_gen v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: the function has a cyclomatic complexity of 90 [INFO] [stderr] --> src/main.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn main() { [INFO] [stderr] 9 | | [INFO] [stderr] 10 | | let foff = false; [INFO] [stderr] 11 | | let linn = false; [INFO] [stderr] ... | [INFO] [stderr] 744 | | file.write_all(b"\\end{document}\n").expect("7"); [INFO] [stderr] 745 | | } [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/main.rs:117:27 [INFO] [stderr] | [INFO] [stderr] 117 | let mut problem = format!("\\("); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"\\(".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] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | / let mut rnd_start = 0; [INFO] [stderr] 121 | | if a_ints != 1 && j == 0 { [INFO] [stderr] 122 | | rnd_start = 1; [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let rnd_start = if a_ints != 1 && j == 0 { 1 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | / let mut rnd_start = 0; [INFO] [stderr] 134 | | if b_ints != 1 && j == 0 { [INFO] [stderr] 135 | | rnd_start = 1; [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let rnd_start = if b_ints != 1 && j == 0 { 1 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `a` and `b` manually [INFO] [stderr] --> src/main.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | / let tmp = a; [INFO] [stderr] 170 | | a = b; [INFO] [stderr] 171 | | b = tmp; [INFO] [stderr] | |___________________^ help: try: `std::mem::swap(&mut a, &mut b)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:173:27 [INFO] [stderr] | [INFO] [stderr] 173 | let mut problem = format!("\\("); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"\\(".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] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / let mut sign = "+"; [INFO] [stderr] 233 | | if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { [INFO] [stderr] 234 | | sign = "-"; [INFO] [stderr] 235 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let sign = if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | / let mut sign = "+"; [INFO] [stderr] 269 | | if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { [INFO] [stderr] 270 | | sign = "-"; [INFO] [stderr] 271 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let sign = if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:273:9 [INFO] [stderr] | [INFO] [stderr] 273 | / let problem; [INFO] [stderr] 274 | | [INFO] [stderr] 275 | | if i % 2 == 1 { [INFO] [stderr] 276 | | problem = format!("\\({}{} {} {} = {} \\quad \\rightarrow \\quad {} =\\)\\\\\\\n\n", a, selected_char, sign, b, c, selected_char); [INFO] [stderr] ... | [INFO] [stderr] 282 | | problem = format!("\\({} {} {}{} = {} \\quad \\rightarrow \\quad {} =\\)\\\\\\\n\n", a, sign, b, selected_char, c, selected_char); [INFO] [stderr] 283 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if i % 2 == 1 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { ..; $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:310:9 [INFO] [stderr] | [INFO] [stderr] 310 | / let mut problem: String; [INFO] [stderr] 311 | | if rand::distributions::Range::new(0, 4).ind_sample(&mut rng) == 0 { [INFO] [stderr] 312 | | problem = format!("\\( - \\dfrac{{{}}}{{{}}}", a, b); [INFO] [stderr] 313 | | } else { [INFO] [stderr] 314 | | problem = format!("\\(\\dfrac{{{}}}{{{}}}", a, b); [INFO] [stderr] 315 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if rand::distributions::Range::new(0, 4).ind_sample(&mut rng) == 0 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `digit_slice`. [INFO] [stderr] --> src/main.rs:349:18 [INFO] [stderr] | [INFO] [stderr] 349 | for j in 0..3 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 349 | for in digit_slice.iter().take(3) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:355:28 [INFO] [stderr] | [INFO] [stderr] 355 | chosen_digits.push(format!("{}", c)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `c.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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:375:9 [INFO] [stderr] | [INFO] [stderr] 375 | / let problem; [INFO] [stderr] 376 | | if i % 2 == 1 { [INFO] [stderr] 377 | | problem = format!("\\(\\dfrac{{{}}}{{{}}} = \\)\\\\\\\n\n", n, d); [INFO] [stderr] 378 | | } else { [INFO] [stderr] 379 | | problem = format!("\\({} / {} = \\)\\\\\\\n\n", n, d); [INFO] [stderr] 380 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if i % 2 == 1 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:402:9 [INFO] [stderr] | [INFO] [stderr] 402 | / let mut units = vec![/*"\\mu m", */"mm", "cm", "dm", "m", "km"]; [INFO] [stderr] 403 | | [INFO] [stderr] 404 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 405 | | units = vec![/*"\\mu m", */"mg", "g", "hg", "kg", "ton"]; [INFO] [stderr] 406 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let units = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) } else { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/main.rs:442:30 [INFO] [stderr] | [INFO] [stderr] 442 | let prefixes = match unit.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `unit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/main.rs:475:30 [INFO] [stderr] | [INFO] [stderr] 475 | let prefixes = match unit.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `unit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/main.rs:492:28 [INFO] [stderr] | [INFO] [stderr] 492 | let stuffs = match unit.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `unit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:539:9 [INFO] [stderr] | [INFO] [stderr] 539 | a = a/b; [INFO] [stderr] | ^^^^^^^ help: replace it with: `a /= b` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:554:9 [INFO] [stderr] | [INFO] [stderr] 554 | / let mut first_term = format!("{}", selected_char); [INFO] [stderr] 555 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 556 | | first_term = format!("{}", rand::distributions::Range::new(2, 13).ind_sample(&mut rng)); [INFO] [stderr] 557 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let first_term = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:559:9 [INFO] [stderr] | [INFO] [stderr] 559 | / let mut sign = "+"; [INFO] [stderr] 560 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 561 | | sign = "-"; [INFO] [stderr] 562 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let sign = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:564:9 [INFO] [stderr] | [INFO] [stderr] 564 | / let mut second_term = format!("({} {} {})", selected_char, sign, rand::distributions::Range::new(2, 13).ind_sample(&mut rng)); [INFO] [stderr] 565 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 566 | | second_term = format!("({} {} {})", rand::distributions::Range::new(2, 13).ind_sample(&mut rng), sign, selected_char); [INFO] [stderr] 567 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let second_term = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:569:9 [INFO] [stderr] | [INFO] [stderr] 569 | / let mut pre_sign = ""; [INFO] [stderr] 570 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 571 | | pre_sign = "-"; [INFO] [stderr] 572 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let pre_sign = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { "-" } else { "" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:574:9 [INFO] [stderr] | [INFO] [stderr] 574 | / let mut problem = format!("\\( {}{}{} =\\)\\\\\\\n\n", pre_sign, first_term, second_term); [INFO] [stderr] 575 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 576 | | problem = format!("\\( {}{}{} =\\)\\\\\\\n\n", pre_sign, second_term, first_term); [INFO] [stderr] 577 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:554:30 [INFO] [stderr] | [INFO] [stderr] 554 | let mut first_term = format!("{}", selected_char); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `selected_char.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: the loop variable `i` is only used to index `inner_terms`. [INFO] [stderr] --> src/main.rs:590:18 [INFO] [stderr] | [INFO] [stderr] 590 | for i in 0..inner_terms.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 590 | for in &mut inner_terms { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:594:34 [INFO] [stderr] | [INFO] [stderr] 594 | inner_terms[i] = format!("{}", rng.choose(&selected_chars).expect("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rng.choose(&selected_chars).expect("").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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:603:17 [INFO] [stderr] | [INFO] [stderr] 603 | / let mut sign = "+"; [INFO] [stderr] 604 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 605 | | sign = "-"; [INFO] [stderr] 606 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let sign = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:618:35 [INFO] [stderr] | [INFO] [stderr] 618 | let height: f64 = scale * (rand::distributions::Range::new(5, 50).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(5, 50).ind_sample(&mut rng))` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:619:33 [INFO] [stderr] | [INFO] [stderr] 619 | let xpos: f64 = scale * (rand::distributions::Range::new(-15, 65).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(-15, 65).ind_sample(&mut rng))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:621:30 [INFO] [stderr] | [INFO] [stderr] 621 | let angle_a = (180.0/3.14159)*((base*xpos) / (base*((xpos*xpos + height*height).sqrt()))).acos(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:623:30 [INFO] [stderr] | [INFO] [stderr] 623 | let angle_c = (180.0/3.14159)*((-base*xpos_2) / (base*((xpos_2*xpos_2 + height*height).sqrt()))).acos(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:631:37 [INFO] [stderr] | [INFO] [stderr] 631 | let selected_char: String = format!("{}", rng.choose(&chars).expect("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rng.choose(&chars).expect("").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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:676:35 [INFO] [stderr] | [INFO] [stderr] 676 | let height: f64 = scale * (rand::distributions::Range::new(5, 50).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(5, 50).ind_sample(&mut rng))` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:677:33 [INFO] [stderr] | [INFO] [stderr] 677 | let xpos: f64 = scale * (rand::distributions::Range::new(-15, 65).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(-15, 65).ind_sample(&mut rng))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:679:31 [INFO] [stderr] | [INFO] [stderr] 679 | let angle_a = ((180.0/3.14159)*((base*xpos) / (base*((xpos*xpos + height*height).sqrt()))).acos()).floor(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:681:31 [INFO] [stderr] | [INFO] [stderr] 681 | let angle_c = ((180.0/3.14159)*((-base*xpos_2) / (base*((xpos_2*xpos_2 + height*height).sqrt()))).acos()).floor(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:688:37 [INFO] [stderr] | [INFO] [stderr] 688 | let len_modifier: f64 = 0.1*(rand::distributions::Range::new(1, 20).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(1, 20).ind_sample(&mut rng))` [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: useless use of `format!` [INFO] [stderr] --> src/main.rs:693:28 [INFO] [stderr] | [INFO] [stderr] 693 | let unit: String = format!("{}", rng.choose(&units).expect("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rng.choose(&units).expect("").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] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `math_gen`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: the function has a cyclomatic complexity of 90 [INFO] [stderr] --> src/main.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn main() { [INFO] [stderr] 9 | | [INFO] [stderr] 10 | | let foff = false; [INFO] [stderr] 11 | | let linn = false; [INFO] [stderr] ... | [INFO] [stderr] 744 | | file.write_all(b"\\end{document}\n").expect("7"); [INFO] [stderr] 745 | | } [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/main.rs:117:27 [INFO] [stderr] | [INFO] [stderr] 117 | let mut problem = format!("\\("); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"\\(".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] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | / let mut rnd_start = 0; [INFO] [stderr] 121 | | if a_ints != 1 && j == 0 { [INFO] [stderr] 122 | | rnd_start = 1; [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let rnd_start = if a_ints != 1 && j == 0 { 1 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | / let mut rnd_start = 0; [INFO] [stderr] 134 | | if b_ints != 1 && j == 0 { [INFO] [stderr] 135 | | rnd_start = 1; [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let rnd_start = if b_ints != 1 && j == 0 { 1 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `a` and `b` manually [INFO] [stderr] --> src/main.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | / let tmp = a; [INFO] [stderr] 170 | | a = b; [INFO] [stderr] 171 | | b = tmp; [INFO] [stderr] | |___________________^ help: try: `std::mem::swap(&mut a, &mut b)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:173:27 [INFO] [stderr] | [INFO] [stderr] 173 | let mut problem = format!("\\("); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"\\(".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] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / let mut sign = "+"; [INFO] [stderr] 233 | | if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { [INFO] [stderr] 234 | | sign = "-"; [INFO] [stderr] 235 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let sign = if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | / let mut sign = "+"; [INFO] [stderr] 269 | | if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { [INFO] [stderr] 270 | | sign = "-"; [INFO] [stderr] 271 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let sign = if rand::distributions::Range::new(0, 2).ind_sample(&mut rng) == 0 { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:273:9 [INFO] [stderr] | [INFO] [stderr] 273 | / let problem; [INFO] [stderr] 274 | | [INFO] [stderr] 275 | | if i % 2 == 1 { [INFO] [stderr] 276 | | problem = format!("\\({}{} {} {} = {} \\quad \\rightarrow \\quad {} =\\)\\\\\\\n\n", a, selected_char, sign, b, c, selected_char); [INFO] [stderr] ... | [INFO] [stderr] 282 | | problem = format!("\\({} {} {}{} = {} \\quad \\rightarrow \\quad {} =\\)\\\\\\\n\n", a, sign, b, selected_char, c, selected_char); [INFO] [stderr] 283 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if i % 2 == 1 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { ..; $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:310:9 [INFO] [stderr] | [INFO] [stderr] 310 | / let mut problem: String; [INFO] [stderr] 311 | | if rand::distributions::Range::new(0, 4).ind_sample(&mut rng) == 0 { [INFO] [stderr] 312 | | problem = format!("\\( - \\dfrac{{{}}}{{{}}}", a, b); [INFO] [stderr] 313 | | } else { [INFO] [stderr] 314 | | problem = format!("\\(\\dfrac{{{}}}{{{}}}", a, b); [INFO] [stderr] 315 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if rand::distributions::Range::new(0, 4).ind_sample(&mut rng) == 0 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `digit_slice`. [INFO] [stderr] --> src/main.rs:349:18 [INFO] [stderr] | [INFO] [stderr] 349 | for j in 0..3 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 349 | for in digit_slice.iter().take(3) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:355:28 [INFO] [stderr] | [INFO] [stderr] 355 | chosen_digits.push(format!("{}", c)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `c.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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:375:9 [INFO] [stderr] | [INFO] [stderr] 375 | / let problem; [INFO] [stderr] 376 | | if i % 2 == 1 { [INFO] [stderr] 377 | | problem = format!("\\(\\dfrac{{{}}}{{{}}} = \\)\\\\\\\n\n", n, d); [INFO] [stderr] 378 | | } else { [INFO] [stderr] 379 | | problem = format!("\\({} / {} = \\)\\\\\\\n\n", n, d); [INFO] [stderr] 380 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if i % 2 == 1 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:402:9 [INFO] [stderr] | [INFO] [stderr] 402 | / let mut units = vec![/*"\\mu m", */"mm", "cm", "dm", "m", "km"]; [INFO] [stderr] 403 | | [INFO] [stderr] 404 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 405 | | units = vec![/*"\\mu m", */"mg", "g", "hg", "kg", "ton"]; [INFO] [stderr] 406 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let units = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) } else { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/main.rs:442:30 [INFO] [stderr] | [INFO] [stderr] 442 | let prefixes = match unit.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `unit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/main.rs:475:30 [INFO] [stderr] | [INFO] [stderr] 475 | let prefixes = match unit.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `unit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/main.rs:492:28 [INFO] [stderr] | [INFO] [stderr] 492 | let stuffs = match unit.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `unit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:539:9 [INFO] [stderr] | [INFO] [stderr] 539 | a = a/b; [INFO] [stderr] | ^^^^^^^ help: replace it with: `a /= b` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:554:9 [INFO] [stderr] | [INFO] [stderr] 554 | / let mut first_term = format!("{}", selected_char); [INFO] [stderr] 555 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 556 | | first_term = format!("{}", rand::distributions::Range::new(2, 13).ind_sample(&mut rng)); [INFO] [stderr] 557 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let first_term = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:559:9 [INFO] [stderr] | [INFO] [stderr] 559 | / let mut sign = "+"; [INFO] [stderr] 560 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 561 | | sign = "-"; [INFO] [stderr] 562 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let sign = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:564:9 [INFO] [stderr] | [INFO] [stderr] 564 | / let mut second_term = format!("({} {} {})", selected_char, sign, rand::distributions::Range::new(2, 13).ind_sample(&mut rng)); [INFO] [stderr] 565 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 566 | | second_term = format!("({} {} {})", rand::distributions::Range::new(2, 13).ind_sample(&mut rng), sign, selected_char); [INFO] [stderr] 567 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let second_term = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:569:9 [INFO] [stderr] | [INFO] [stderr] 569 | / let mut pre_sign = ""; [INFO] [stderr] 570 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 571 | | pre_sign = "-"; [INFO] [stderr] 572 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let pre_sign = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { "-" } else { "" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:574:9 [INFO] [stderr] | [INFO] [stderr] 574 | / let mut problem = format!("\\( {}{}{} =\\)\\\\\\\n\n", pre_sign, first_term, second_term); [INFO] [stderr] 575 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 576 | | problem = format!("\\( {}{}{} =\\)\\\\\\\n\n", pre_sign, second_term, first_term); [INFO] [stderr] 577 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let problem = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:554:30 [INFO] [stderr] | [INFO] [stderr] 554 | let mut first_term = format!("{}", selected_char); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `selected_char.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: the loop variable `i` is only used to index `inner_terms`. [INFO] [stderr] --> src/main.rs:590:18 [INFO] [stderr] | [INFO] [stderr] 590 | for i in 0..inner_terms.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 590 | for in &mut inner_terms { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:594:34 [INFO] [stderr] | [INFO] [stderr] 594 | inner_terms[i] = format!("{}", rng.choose(&selected_chars).expect("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rng.choose(&selected_chars).expect("").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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:603:17 [INFO] [stderr] | [INFO] [stderr] 603 | / let mut sign = "+"; [INFO] [stderr] 604 | | if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { [INFO] [stderr] 605 | | sign = "-"; [INFO] [stderr] 606 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let sign = if 0 == rand::distributions::Range::new(0, 2).ind_sample(&mut rng) { "-" } else { "+" };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:618:35 [INFO] [stderr] | [INFO] [stderr] 618 | let height: f64 = scale * (rand::distributions::Range::new(5, 50).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(5, 50).ind_sample(&mut rng))` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:619:33 [INFO] [stderr] | [INFO] [stderr] 619 | let xpos: f64 = scale * (rand::distributions::Range::new(-15, 65).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(-15, 65).ind_sample(&mut rng))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:621:30 [INFO] [stderr] | [INFO] [stderr] 621 | let angle_a = (180.0/3.14159)*((base*xpos) / (base*((xpos*xpos + height*height).sqrt()))).acos(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:623:30 [INFO] [stderr] | [INFO] [stderr] 623 | let angle_c = (180.0/3.14159)*((-base*xpos_2) / (base*((xpos_2*xpos_2 + height*height).sqrt()))).acos(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:631:37 [INFO] [stderr] | [INFO] [stderr] 631 | let selected_char: String = format!("{}", rng.choose(&chars).expect("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rng.choose(&chars).expect("").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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:676:35 [INFO] [stderr] | [INFO] [stderr] 676 | let height: f64 = scale * (rand::distributions::Range::new(5, 50).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(5, 50).ind_sample(&mut rng))` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:677:33 [INFO] [stderr] | [INFO] [stderr] 677 | let xpos: f64 = scale * (rand::distributions::Range::new(-15, 65).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(-15, 65).ind_sample(&mut rng))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:679:31 [INFO] [stderr] | [INFO] [stderr] 679 | let angle_a = ((180.0/3.14159)*((base*xpos) / (base*((xpos*xpos + height*height).sqrt()))).acos()).floor(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:681:31 [INFO] [stderr] | [INFO] [stderr] 681 | let angle_c = ((180.0/3.14159)*((-base*xpos_2) / (base*((xpos_2*xpos_2 + height*height).sqrt()))).acos()).floor(); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:688:37 [INFO] [stderr] | [INFO] [stderr] 688 | let len_modifier: f64 = 0.1*(rand::distributions::Range::new(1, 20).ind_sample(&mut rng) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(rand::distributions::Range::new(1, 20).ind_sample(&mut rng))` [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: useless use of `format!` [INFO] [stderr] --> src/main.rs:693:28 [INFO] [stderr] | [INFO] [stderr] 693 | let unit: String = format!("{}", rng.choose(&units).expect("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rng.choose(&units).expect("").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] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `math_gen`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "60f13e14a50444604333da9157ba780d484f1d5dfe5f200e1349f78dc6630b84"` [INFO] running `"docker" "rm" "-f" "60f13e14a50444604333da9157ba780d484f1d5dfe5f200e1349f78dc6630b84"` [INFO] [stdout] 60f13e14a50444604333da9157ba780d484f1d5dfe5f200e1349f78dc6630b84