[INFO] updating cached repository XeryusTC/map18xx [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/XeryusTC/map18xx [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/XeryusTC/map18xx" "work/ex/clippy-test-run/sources/stable/gh/XeryusTC/map18xx"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/XeryusTC/map18xx'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/XeryusTC/map18xx" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/XeryusTC/map18xx"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/XeryusTC/map18xx'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 391fc1ae7b9850debb7edb7946046042e8ba66e1 [INFO] sha for GitHub repo XeryusTC/map18xx: 391fc1ae7b9850debb7edb7946046042e8ba66e1 [INFO] validating manifest of XeryusTC/map18xx 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 XeryusTC/map18xx 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 XeryusTC/map18xx [INFO] finished frobbing XeryusTC/map18xx [INFO] frobbed toml for XeryusTC/map18xx written to work/ex/clippy-test-run/sources/stable/gh/XeryusTC/map18xx/Cargo.toml [INFO] started frobbing XeryusTC/map18xx [INFO] finished frobbing XeryusTC/map18xx [INFO] frobbed toml for XeryusTC/map18xx written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/XeryusTC/map18xx/Cargo.toml [INFO] crate XeryusTC/map18xx 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 XeryusTC/map18xx against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/XeryusTC/map18xx:/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] a03ecc300a1beaf7654db582c4295b8f882354c826483935f63148128df3db53 [INFO] running `"docker" "start" "-a" "a03ecc300a1beaf7654db582c4295b8f882354c826483935f63148128df3db53"` [INFO] [stderr] Checking svg v0.5.10 [INFO] [stderr] Checking num-complex v0.1.41 [INFO] [stderr] Checking alga v0.5.2 [INFO] [stderr] Checking nalgebra v0.13.1 [INFO] [stderr] Checking map18xx v0.0.5 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/draw/consts.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | pub const PPCM: f64 = 35.43307086614173 * 0.577350269258; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `35.433_070_866_141_73` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/draw/consts.rs:2:43 [INFO] [stderr] | [INFO] [stderr] 2 | pub const PPCM: f64 = 35.43307086614173 * 0.577350269258; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `0.577_350_269_258` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/draw/consts.rs:5:20 [INFO] [stderr] | [INFO] [stderr] 5 | pub const C: f64 = 0.551915024494; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `0.551_915_024_494` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/draw/consts.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | pub const PPCM: f64 = 35.43307086614173 * 0.577350269258; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `35.433_070_866_141_73` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/draw/consts.rs:2:43 [INFO] [stderr] | [INFO] [stderr] 2 | pub const PPCM: f64 = 35.43307086614173 * 0.577350269258; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `0.577_350_269_258` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/draw/consts.rs:5:20 [INFO] [stderr] | [INFO] [stderr] 5 | pub const C: f64 = 0.551915024494; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `0.551_915_024_494` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/helpers.rs:64:35 [INFO] [stderr] | [INFO] [stderr] 64 | rotation: &f64) -> element::Path { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/helpers.rs:73:20 [INFO] [stderr] | [INFO] [stderr] 73 | let control1 = match &path.start_control { [INFO] [stderr] | ____________________^ [INFO] [stderr] 74 | | &None => path.radius() * C * rot * basis * path.start() + center, [INFO] [stderr] 75 | | &Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] 76 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 73 | let control1 = match path.start_control { [INFO] [stderr] 74 | None => path.radius() * C * rot * basis * path.start() + center, [INFO] [stderr] 75 | Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/helpers.rs:77:20 [INFO] [stderr] | [INFO] [stderr] 77 | let control2 = match &path.end_control { [INFO] [stderr] | ____________________^ [INFO] [stderr] 78 | | &None => path.radius() * C * rot * basis * path.end() + center, [INFO] [stderr] 79 | | &Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] 80 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 77 | let control2 = match path.end_control { [INFO] [stderr] 78 | None => path.radius() * C * rot * basis * path.end() + center, [INFO] [stderr] 79 | Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/helpers.rs:105:30 [INFO] [stderr] | [INFO] [stderr] 105 | rotation: &f64) -> na::Vector2 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/helpers.rs:64:35 [INFO] [stderr] | [INFO] [stderr] 64 | rotation: &f64) -> element::Path { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/helpers.rs:73:20 [INFO] [stderr] | [INFO] [stderr] 73 | let control1 = match &path.start_control { [INFO] [stderr] | ____________________^ [INFO] [stderr] 74 | | &None => path.radius() * C * rot * basis * path.start() + center, [INFO] [stderr] 75 | | &Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] 76 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 73 | let control1 = match path.start_control { [INFO] [stderr] 74 | None => path.radius() * C * rot * basis * path.start() + center, [INFO] [stderr] 75 | Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/helpers.rs:77:20 [INFO] [stderr] | [INFO] [stderr] 77 | let control2 = match &path.end_control { [INFO] [stderr] | ____________________^ [INFO] [stderr] 78 | | &None => path.radius() * C * rot * basis * path.end() + center, [INFO] [stderr] 79 | | &Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] 80 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 77 | let control2 = match path.end_control { [INFO] [stderr] 78 | None => path.radius() * C * rot * basis * path.end() + center, [INFO] [stderr] 79 | Some(ref point) => rot * basis * point.as_vector() + center, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/helpers.rs:105:30 [INFO] [stderr] | [INFO] [stderr] 105 | rotation: &f64) -> na::Vector2 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/draw/helpers.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / match orientation { [INFO] [stderr] 149 | | &Orientation::Horizontal => na::Matrix2x3::from_columns(&[ [INFO] [stderr] 150 | | na::Vector2::new( 1.0, 0.0), [INFO] [stderr] 151 | | na::Vector2::new( 0.5, -0.5 * 3.0_f64.sqrt()), [INFO] [stderr] ... | [INFO] [stderr] 158 | | ]), [INFO] [stderr] 159 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 148 | match *orientation { [INFO] [stderr] 149 | Orientation::Horizontal => na::Matrix2x3::from_columns(&[ [INFO] [stderr] 150 | na::Vector2::new( 1.0, 0.0), [INFO] [stderr] 151 | na::Vector2::new( 0.5, -0.5 * 3.0_f64.sqrt()), [INFO] [stderr] 152 | na::Vector2::new(-0.5, -0.5 * 3.0_f64.sqrt()) [INFO] [stderr] 153 | ]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/helpers.rs:162:22 [INFO] [stderr] | [INFO] [stderr] 162 | pub fn rotate(theta: &f64) -> na::Matrix2 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/draw/helpers.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / match orientation { [INFO] [stderr] 149 | | &Orientation::Horizontal => na::Matrix2x3::from_columns(&[ [INFO] [stderr] 150 | | na::Vector2::new( 1.0, 0.0), [INFO] [stderr] 151 | | na::Vector2::new( 0.5, -0.5 * 3.0_f64.sqrt()), [INFO] [stderr] ... | [INFO] [stderr] 158 | | ]), [INFO] [stderr] 159 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 148 | match *orientation { [INFO] [stderr] 149 | Orientation::Horizontal => na::Matrix2x3::from_columns(&[ [INFO] [stderr] 150 | na::Vector2::new( 1.0, 0.0), [INFO] [stderr] 151 | na::Vector2::new( 0.5, -0.5 * 3.0_f64.sqrt()), [INFO] [stderr] 152 | na::Vector2::new(-0.5, -0.5 * 3.0_f64.sqrt()) [INFO] [stderr] 153 | ]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/helpers.rs:162:22 [INFO] [stderr] | [INFO] [stderr] 162 | pub fn rotate(theta: &f64) -> na::Matrix2 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:101:31 [INFO] [stderr] | [INFO] [stderr] 101 | rotation: &f64) -> element::Group [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:101:31 [INFO] [stderr] | [INFO] [stderr] 101 | rotation: &f64) -> element::Group [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:188:33 [INFO] [stderr] | [INFO] [stderr] 188 | rotation: &f64) -> element::Group { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:284:40 [INFO] [stderr] | [INFO] [stderr] 284 | vstride = 3.0_f64.sqrt() / vnums as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(vnums)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:291:40 [INFO] [stderr] | [INFO] [stderr] 291 | hstride = 3.0_f64.sqrt() / hnums as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(hnums)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:312:31 [INFO] [stderr] | [INFO] [stderr] 312 | let x1 = Vector2::new(x as f64 * hstride + hoffset, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:314:31 [INFO] [stderr] | [INFO] [stderr] 314 | let x2 = Vector2::new(x as f64 * hstride + hoffset, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:331:31 [INFO] [stderr] | [INFO] [stderr] 331 | y as f64 * vstride + voffset) * scale(&game.map); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:333:31 [INFO] [stderr] | [INFO] [stderr] 333 | y as f64 * vstride + voffset) * scale(&game.map); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:188:33 [INFO] [stderr] | [INFO] [stderr] 188 | rotation: &f64) -> element::Group { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:356:24 [INFO] [stderr] | [INFO] [stderr] 356 | rotation: &f64) -> element::Group { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:371:37 [INFO] [stderr] | [INFO] [stderr] 371 | rotation: &f64) -> element::Path { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/draw/element.rs:384:12 [INFO] [stderr] | [INFO] [stderr] 384 | if let Some(_) = track.green { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 385 | | blocks += 1.0; [INFO] [stderr] 386 | | } [INFO] [stderr] | |_____- help: try this: `if track.green.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/draw/element.rs:387:12 [INFO] [stderr] | [INFO] [stderr] 387 | if let Some(_) = track.russet { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 388 | | blocks += 1.0; [INFO] [stderr] 389 | | } [INFO] [stderr] | |_____- help: try this: `if track.russet.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/draw/element.rs:390:12 [INFO] [stderr] | [INFO] [stderr] 390 | if let Some(_) = track.grey { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 391 | | blocks += 1.0; [INFO] [stderr] 392 | | } [INFO] [stderr] | |_____- help: try this: `if track.grey.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/draw/element.rs:420:9 [INFO] [stderr] | [INFO] [stderr] 420 | / if let &(&Some(ref text), ref color) = block { [INFO] [stderr] 421 | | g = g.add(element::Rectangle::new() [INFO] [stderr] 422 | | .set("x", topleft.x + i * offset.x) [INFO] [stderr] 423 | | .set("y", topleft.y) [INFO] [stderr] ... | [INFO] [stderr] 429 | | i += 1.0; [INFO] [stderr] 430 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 420 | if let (&Some(ref text), ref color) = *block { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:441:31 [INFO] [stderr] | [INFO] [stderr] 441 | rotation: &f64) -> element::Group [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:447:21 [INFO] [stderr] | [INFO] [stderr] 447 | let mut angle = stop.revenue_angle as f64 * PI / 180.0 + rotation; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(stop.revenue_angle)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:284:40 [INFO] [stderr] | [INFO] [stderr] 284 | vstride = 3.0_f64.sqrt() / vnums as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(vnums)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:291:40 [INFO] [stderr] | [INFO] [stderr] 291 | hstride = 3.0_f64.sqrt() / hnums as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(hnums)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:312:31 [INFO] [stderr] | [INFO] [stderr] 312 | let x1 = Vector2::new(x as f64 * hstride + hoffset, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:314:31 [INFO] [stderr] | [INFO] [stderr] 314 | let x2 = Vector2::new(x as f64 * hstride + hoffset, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/element.rs:485:5 [INFO] [stderr] | [INFO] [stderr] 485 | / match &terrain.terrain_type { [INFO] [stderr] 486 | | &tile::TerrainType::Rough => { [INFO] [stderr] 487 | | let pos1 = Vector3::new(-0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] 488 | | let pos2 = Vector3::new( 0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] ... | [INFO] [stderr] 598 | | } [INFO] [stderr] 599 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 485 | match terrain.terrain_type { [INFO] [stderr] 486 | tile::TerrainType::Rough => { [INFO] [stderr] 487 | let pos1 = Vector3::new(-0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] 488 | let pos2 = Vector3::new( 0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] 489 | let pos3 = Vector3::new(0.0, 0.4*TERRAIN_SIZE, 0.4*TERRAIN_SIZE); [INFO] [stderr] 490 | let path = Data::new() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:331:31 [INFO] [stderr] | [INFO] [stderr] 331 | y as f64 * vstride + voffset) * scale(&game.map); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:333:31 [INFO] [stderr] | [INFO] [stderr] 333 | y as f64 * vstride + voffset) * scale(&game.map); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:356:24 [INFO] [stderr] | [INFO] [stderr] 356 | rotation: &f64) -> element::Group { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:371:37 [INFO] [stderr] | [INFO] [stderr] 371 | rotation: &f64) -> element::Path { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/draw/element.rs:611:20 [INFO] [stderr] | [INFO] [stderr] 611 | style.push_str(match anchor { [INFO] [stderr] | ____________________^ [INFO] [stderr] 612 | | &TextAnchor::Start => "text-anchor:start;", [INFO] [stderr] 613 | | &TextAnchor::Middle =>"text-anchor:middle;", [INFO] [stderr] 614 | | &TextAnchor::End => "text-anchor:end;", [INFO] [stderr] 615 | | }); [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 611 | style.push_str(match *anchor { [INFO] [stderr] 612 | TextAnchor::Start => "text-anchor:start;", [INFO] [stderr] 613 | TextAnchor::Middle =>"text-anchor:middle;", [INFO] [stderr] 614 | TextAnchor::End => "text-anchor:end;", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/draw/element.rs:384:12 [INFO] [stderr] | [INFO] [stderr] 384 | if let Some(_) = track.green { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 385 | | blocks += 1.0; [INFO] [stderr] 386 | | } [INFO] [stderr] | |_____- help: try this: `if track.green.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/draw/element.rs:387:12 [INFO] [stderr] | [INFO] [stderr] 387 | if let Some(_) = track.russet { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 388 | | blocks += 1.0; [INFO] [stderr] 389 | | } [INFO] [stderr] | |_____- help: try this: `if track.russet.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/draw/element.rs:390:12 [INFO] [stderr] | [INFO] [stderr] 390 | if let Some(_) = track.grey { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 391 | | blocks += 1.0; [INFO] [stderr] 392 | | } [INFO] [stderr] | |_____- help: try this: `if track.grey.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/draw/mod.rs:23:23 [INFO] [stderr] | [INFO] [stderr] 23 | definitions: &HashMap) -> Group { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 22 | pub fn draw_tile_definitions( [INFO] [stderr] 23 | definitions: &HashMap) -> Group { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/draw/element.rs:420:9 [INFO] [stderr] | [INFO] [stderr] 420 | / if let &(&Some(ref text), ref color) = block { [INFO] [stderr] 421 | | g = g.add(element::Rectangle::new() [INFO] [stderr] 422 | | .set("x", topleft.x + i * offset.x) [INFO] [stderr] 423 | | .set("y", topleft.y) [INFO] [stderr] ... | [INFO] [stderr] 429 | | i += 1.0; [INFO] [stderr] 430 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 420 | if let (&Some(ref text), ref color) = *block { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/draw/element.rs:441:31 [INFO] [stderr] | [INFO] [stderr] 441 | rotation: &f64) -> element::Group [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/element.rs:447:21 [INFO] [stderr] | [INFO] [stderr] 447 | let mut angle = stop.revenue_angle as f64 * PI / 180.0 + rotation; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(stop.revenue_angle)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/draw/mod.rs:91:22 [INFO] [stderr] | [INFO] [stderr] 91 | for _ in 0..*game.manifest.amounts(&None).get(tile.name()).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&game.manifest.amounts(&None)[tile.name()]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:92:21 [INFO] [stderr] | [INFO] [stderr] 92 | let x = ((drawn % TILES_PER_PAGE) / TILES_PER_COL) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((drawn % TILES_PER_PAGE) / TILES_PER_COL)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:93:21 [INFO] [stderr] | [INFO] [stderr] 93 | let y = (drawn % TILES_PER_COL) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(drawn % TILES_PER_COL)` [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/draw/mod.rs:121:21 [INFO] [stderr] | [INFO] [stderr] 121 | let x = (col - (row - (row % 2)) / 2) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col - (row - (row % 2)) / 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:122:21 [INFO] [stderr] | [INFO] [stderr] 122 | let z = row as f64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(row)` [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/draw/mod.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | let x = col as f64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(col)` [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/draw/mod.rs:127:21 [INFO] [stderr] | [INFO] [stderr] 127 | let z = (row - (col - (col % 2)) / 2) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(row - (col - (col % 2)) / 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/element.rs:485:5 [INFO] [stderr] | [INFO] [stderr] 485 | / match &terrain.terrain_type { [INFO] [stderr] 486 | | &tile::TerrainType::Rough => { [INFO] [stderr] 487 | | let pos1 = Vector3::new(-0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] 488 | | let pos2 = Vector3::new( 0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] ... | [INFO] [stderr] 598 | | } [INFO] [stderr] 599 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 485 | match terrain.terrain_type { [INFO] [stderr] 486 | tile::TerrainType::Rough => { [INFO] [stderr] 487 | let pos1 = Vector3::new(-0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] 488 | let pos2 = Vector3::new( 0.7 * TERRAIN_SIZE, 0.0, 0.0); [INFO] [stderr] 489 | let pos3 = Vector3::new(0.0, 0.4*TERRAIN_SIZE, 0.4*TERRAIN_SIZE); [INFO] [stderr] 490 | let path = Data::new() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/mod.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | / match &game.map.orientation { [INFO] [stderr] 139 | | &Orientation::Horizontal => { [INFO] [stderr] 140 | | width = 0.3 * 3.0_f64.sqrt() + game.map.width as f64 * 1.5; [INFO] [stderr] 141 | | height = (0.5 + game.map.height as f64) * 3.0_f64.sqrt(); [INFO] [stderr] ... | [INFO] [stderr] 150 | | } [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 138 | match game.map.orientation { [INFO] [stderr] 139 | Orientation::Horizontal => { [INFO] [stderr] 140 | width = 0.3 * 3.0_f64.sqrt() + game.map.width as f64 * 1.5; [INFO] [stderr] 141 | height = (0.5 + game.map.height as f64) * 3.0_f64.sqrt(); [INFO] [stderr] 142 | offset = Vector2::new(consts::BORDER + 1.0, [INFO] [stderr] 143 | consts::BORDER + 3.0_f64.sqrt() / 2.0); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:140:44 [INFO] [stderr] | [INFO] [stderr] 140 | width = 0.3 * 3.0_f64.sqrt() + game.map.width as f64 * 1.5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:141:29 [INFO] [stderr] | [INFO] [stderr] 141 | height = (0.5 + game.map.height as f64) * 3.0_f64.sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:146:28 [INFO] [stderr] | [INFO] [stderr] 146 | width = (0.5 + game.map.width as f64) * 3.0_f64.sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:147:45 [INFO] [stderr] | [INFO] [stderr] 147 | height = 0.3 * 3.0_f64.sqrt() + game.map.height as f64 * 1.5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.height)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/draw/mod.rs:183:20 [INFO] [stderr] | [INFO] [stderr] 183 | let tile = tiles.get(&location).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&tiles[&location]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/draw/mod.rs:187:24 [INFO] [stderr] | [INFO] [stderr] 187 | let city = tile.cities().get(token.station).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tile.cities()[token.station]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/draw/element.rs:611:20 [INFO] [stderr] | [INFO] [stderr] 611 | style.push_str(match anchor { [INFO] [stderr] | ____________________^ [INFO] [stderr] 612 | | &TextAnchor::Start => "text-anchor:start;", [INFO] [stderr] 613 | | &TextAnchor::Middle =>"text-anchor:middle;", [INFO] [stderr] 614 | | &TextAnchor::End => "text-anchor:end;", [INFO] [stderr] 615 | | }); [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 611 | style.push_str(match *anchor { [INFO] [stderr] 612 | TextAnchor::Start => "text-anchor:start;", [INFO] [stderr] 613 | TextAnchor::Middle =>"text-anchor:middle;", [INFO] [stderr] 614 | TextAnchor::End => "text-anchor:end;", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/draw/mod.rs:23:23 [INFO] [stderr] | [INFO] [stderr] 23 | definitions: &HashMap) -> Group { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 22 | pub fn draw_tile_definitions( [INFO] [stderr] 23 | definitions: &HashMap) -> Group { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/draw/mod.rs:91:22 [INFO] [stderr] | [INFO] [stderr] 91 | for _ in 0..*game.manifest.amounts(&None).get(tile.name()).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&game.manifest.amounts(&None)[tile.name()]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:92:21 [INFO] [stderr] | [INFO] [stderr] 92 | let x = ((drawn % TILES_PER_PAGE) / TILES_PER_COL) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((drawn % TILES_PER_PAGE) / TILES_PER_COL)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:93:21 [INFO] [stderr] | [INFO] [stderr] 93 | let y = (drawn % TILES_PER_COL) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(drawn % TILES_PER_COL)` [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/draw/mod.rs:121:21 [INFO] [stderr] | [INFO] [stderr] 121 | let x = (col - (row - (row % 2)) / 2) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col - (row - (row % 2)) / 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:122:21 [INFO] [stderr] | [INFO] [stderr] 122 | let z = row as f64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(row)` [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/draw/mod.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | let x = col as f64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(col)` [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/draw/mod.rs:127:21 [INFO] [stderr] | [INFO] [stderr] 127 | let z = (row - (col - (col % 2)) / 2) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(row - (col - (col % 2)) / 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/draw/mod.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | / match &game.map.orientation { [INFO] [stderr] 139 | | &Orientation::Horizontal => { [INFO] [stderr] 140 | | width = 0.3 * 3.0_f64.sqrt() + game.map.width as f64 * 1.5; [INFO] [stderr] 141 | | height = (0.5 + game.map.height as f64) * 3.0_f64.sqrt(); [INFO] [stderr] ... | [INFO] [stderr] 150 | | } [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 138 | match game.map.orientation { [INFO] [stderr] 139 | Orientation::Horizontal => { [INFO] [stderr] 140 | width = 0.3 * 3.0_f64.sqrt() + game.map.width as f64 * 1.5; [INFO] [stderr] 141 | height = (0.5 + game.map.height as f64) * 3.0_f64.sqrt(); [INFO] [stderr] 142 | offset = Vector2::new(consts::BORDER + 1.0, [INFO] [stderr] 143 | consts::BORDER + 3.0_f64.sqrt() / 2.0); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:140:44 [INFO] [stderr] | [INFO] [stderr] 140 | width = 0.3 * 3.0_f64.sqrt() + game.map.width as f64 * 1.5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:141:29 [INFO] [stderr] | [INFO] [stderr] 141 | height = (0.5 + game.map.height as f64) * 3.0_f64.sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:146:28 [INFO] [stderr] | [INFO] [stderr] 146 | width = (0.5 + game.map.width as f64) * 3.0_f64.sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/draw/mod.rs:147:45 [INFO] [stderr] | [INFO] [stderr] 147 | height = 0.3 * 3.0_f64.sqrt() + game.map.height as f64 * 1.5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(game.map.height)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/draw/mod.rs:183:20 [INFO] [stderr] | [INFO] [stderr] 183 | let tile = tiles.get(&location).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&tiles[&location]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/draw/mod.rs:187:24 [INFO] [stderr] | [INFO] [stderr] 187 | let city = tile.cities().get(token.station).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tile.cities()[token.station]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `game::Game` [INFO] [stderr] --> src/game.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | / pub fn new() -> Game { [INFO] [stderr] 131 | | Game { [INFO] [stderr] 132 | | manifest: Manifest::default(), [INFO] [stderr] 133 | | map: Map::default(), [INFO] [stderr] ... | [INFO] [stderr] 136 | | } [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 122 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:205:17 [INFO] [stderr] | [INFO] [stderr] 205 | / if let &Action::TileLay {ref location, ref tile, [INFO] [stderr] 206 | | ref orientation} = action { [INFO] [stderr] 207 | | let location = location.as_coord(&self.map.orientation); [INFO] [stderr] 208 | | let t = PlacedTile::new_from(self.manifest.tiles.iter() [INFO] [stderr] ... | [INFO] [stderr] 212 | | placed.insert(location, t); [INFO] [stderr] 213 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 205 | if let Action::TileLay {ref location, ref tile, [INFO] [stderr] 206 | ref orientation} = *action { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/game.rs:225:46 [INFO] [stderr] | [INFO] [stderr] 225 | tokens.entry(token.location).or_insert(vec![]).push(token); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:231:17 [INFO] [stderr] | [INFO] [stderr] 231 | / if let &Action::Token {ref location, ref company, city} = act { [INFO] [stderr] 232 | | let location = location.as_coord(&self.map.orientation); [INFO] [stderr] 233 | | let entry = tokens.entry(location).or_insert(vec![]); [INFO] [stderr] 234 | | let city = match city { [INFO] [stderr] ... | [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 231 | if let Action::Token {ref location, ref company, city} = *act { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/game.rs:233:56 [INFO] [stderr] | [INFO] [stderr] 233 | let entry = tokens.entry(location).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:248:34 [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= top_tiles(&self.placed_tiles(), [INFO] [stderr] | __________________________________^ [INFO] [stderr] 249 | | &self.map.tiles()) [INFO] [stderr] 250 | | .get(&location).unwrap() [INFO] [stderr] 251 | | .cities().get(city).unwrap().circles [INFO] [stderr] | |_________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= top_tiles(&self.placed_tiles(), [INFO] [stderr] 249 | &self.map.tiles()) [INFO] [stderr] 250 | .get(&location).unwrap() [INFO] [stderr] 251 | .cities()[city].circles [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:248:34 [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= top_tiles(&self.placed_tiles(), [INFO] [stderr] | __________________________________^ [INFO] [stderr] 249 | | &self.map.tiles()) [INFO] [stderr] 250 | | .get(&location).unwrap() [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= &top_tiles(&self.placed_tiles(), [INFO] [stderr] 249 | &self.map.tiles())[&location] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:258:42 [INFO] [stderr] | [INFO] [stderr] 258 | Token::place(self.companies.get(company).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.companies[company]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:262:22 [INFO] [stderr] | [INFO] [stderr] 262 | else if let &Action::RemoveCompany {ref company} = act { [INFO] [stderr] | ______________________^ [INFO] [stderr] 263 | | for (_location, entry) in tokens.iter_mut() { [INFO] [stderr] 264 | | // Remove company [INFO] [stderr] 265 | | entry.retain(|t| t.name != *company); [INFO] [stderr] ... | [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 262 | else if let Action::RemoveCompany {ref company} = *act { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/game.rs:288:34 [INFO] [stderr] | [INFO] [stderr] 288 | pub fn top_tiles<'a>(placed: &'a HashMap<(u32, u32), PlacedTile>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 288 | pub fn top_tiles<'a, S: ::std::hash::BuildHasher>(placed: &'a HashMap<(u32, u32), PlacedTile, S>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/game.rs:289:33 [INFO] [stderr] | [INFO] [stderr] 289 | tiles: &'a HashMap<(u32, u32), &tile::TileSpec>) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 288 | pub fn top_tiles<'a, S: ::std::hash::BuildHasher + Default>(placed: &'a HashMap<(u32, u32), PlacedTile>, [INFO] [stderr] 289 | tiles: &'a HashMap<(u32, u32), &tile::TileSpec, S>) [INFO] [stderr] | [INFO] [stderr] help: ...and use generic constructor [INFO] [stderr] | [INFO] [stderr] 292 | let mut map: HashMap<(u32, u32), &tile::TileSpec> = HashMap::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/game.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | pub fn get_tile(&self, name: &String) -> Result<&tile::Tile, String> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:324:9 [INFO] [stderr] | [INFO] [stderr] 324 | / match log { [INFO] [stderr] 325 | | // Don't bother with the amount if there is no log [INFO] [stderr] 326 | | &None => self.amounts.clone(), [INFO] [stderr] 327 | | &Some(ref log) => { [INFO] [stderr] ... | [INFO] [stderr] 349 | | [INFO] [stderr] 350 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 324 | match *log { [INFO] [stderr] 325 | // Don't bother with the amount if there is no log [INFO] [stderr] 326 | None => self.amounts.clone(), [INFO] [stderr] 327 | Some(ref log) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:331:21 [INFO] [stderr] | [INFO] [stderr] 331 | / if let &Action::TileLay{ref location, ref tile, [INFO] [stderr] 332 | | ..} = action { [INFO] [stderr] 333 | | // For calculating manifest amounts we don't care about [INFO] [stderr] 334 | | // the exact rendered position, just the coordinate so [INFO] [stderr] ... | [INFO] [stderr] 342 | | *used.entry(tile).or_insert(0) += 1; [INFO] [stderr] 343 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 331 | if let Action::TileLay{ref location, ref tile, [INFO] [stderr] 332 | ..} = *action { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `game::Game` [INFO] [stderr] --> src/game.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | / pub fn new() -> Game { [INFO] [stderr] 131 | | Game { [INFO] [stderr] 132 | | manifest: Manifest::default(), [INFO] [stderr] 133 | | map: Map::default(), [INFO] [stderr] ... | [INFO] [stderr] 136 | | } [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 122 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:205:17 [INFO] [stderr] | [INFO] [stderr] 205 | / if let &Action::TileLay {ref location, ref tile, [INFO] [stderr] 206 | | ref orientation} = action { [INFO] [stderr] 207 | | let location = location.as_coord(&self.map.orientation); [INFO] [stderr] 208 | | let t = PlacedTile::new_from(self.manifest.tiles.iter() [INFO] [stderr] ... | [INFO] [stderr] 212 | | placed.insert(location, t); [INFO] [stderr] 213 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 205 | if let Action::TileLay {ref location, ref tile, [INFO] [stderr] 206 | ref orientation} = *action { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/game.rs:385:8 [INFO] [stderr] | [INFO] [stderr] 385 | / match &self.color { [INFO] [stderr] 386 | | &None => tile::colors::GROUND, [INFO] [stderr] 387 | | &Some(ref c) => tile::colors::name_to_color(&c), [INFO] [stderr] 388 | | } [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 385 | match self.color { [INFO] [stderr] 386 | None => tile::colors::GROUND, [INFO] [stderr] 387 | Some(ref c) => tile::colors::name_to_color(&c), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/game.rs:443:8 [INFO] [stderr] | [INFO] [stderr] 443 | / match &self.orientation { [INFO] [stderr] 444 | | &None => 0.0, [INFO] [stderr] 445 | | &Some(ref o) => tile::direction_to_angle(o), [INFO] [stderr] 446 | | } [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 443 | match self.orientation { [INFO] [stderr] 444 | None => 0.0, [INFO] [stderr] 445 | Some(ref o) => tile::direction_to_angle(o), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/game.rs:450:8 [INFO] [stderr] | [INFO] [stderr] 450 | / match &self.arrows { [INFO] [stderr] 451 | | &None => vec![], [INFO] [stderr] 452 | | &Some(ref arrows) => arrows.to_vec(), [INFO] [stderr] 453 | | } [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 450 | match self.arrows { [INFO] [stderr] 451 | None => vec![], [INFO] [stderr] 452 | Some(ref arrows) => arrows.to_vec(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/game.rs:225:46 [INFO] [stderr] | [INFO] [stderr] 225 | tokens.entry(token.location).or_insert(vec![]).push(token); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:231:17 [INFO] [stderr] | [INFO] [stderr] 231 | / if let &Action::Token {ref location, ref company, city} = act { [INFO] [stderr] 232 | | let location = location.as_coord(&self.map.orientation); [INFO] [stderr] 233 | | let entry = tokens.entry(location).or_insert(vec![]); [INFO] [stderr] 234 | | let city = match city { [INFO] [stderr] ... | [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 231 | if let Action::Token {ref location, ref company, city} = *act { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/game.rs:233:56 [INFO] [stderr] | [INFO] [stderr] 233 | let entry = tokens.entry(location).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:248:34 [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= top_tiles(&self.placed_tiles(), [INFO] [stderr] | __________________________________^ [INFO] [stderr] 249 | | &self.map.tiles()) [INFO] [stderr] 250 | | .get(&location).unwrap() [INFO] [stderr] 251 | | .cities().get(city).unwrap().circles [INFO] [stderr] | |_________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= top_tiles(&self.placed_tiles(), [INFO] [stderr] 249 | &self.map.tiles()) [INFO] [stderr] 250 | .get(&location).unwrap() [INFO] [stderr] 251 | .cities()[city].circles [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:248:34 [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= top_tiles(&self.placed_tiles(), [INFO] [stderr] | __________________________________^ [INFO] [stderr] 249 | | &self.map.tiles()) [INFO] [stderr] 250 | | .get(&location).unwrap() [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 248 | if placed >= &top_tiles(&self.placed_tiles(), [INFO] [stderr] 249 | &self.map.tiles())[&location] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:258:42 [INFO] [stderr] | [INFO] [stderr] 258 | Token::place(self.companies.get(company).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.companies[company]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:262:22 [INFO] [stderr] | [INFO] [stderr] 262 | else if let &Action::RemoveCompany {ref company} = act { [INFO] [stderr] | ______________________^ [INFO] [stderr] 263 | | for (_location, entry) in tokens.iter_mut() { [INFO] [stderr] 264 | | // Remove company [INFO] [stderr] 265 | | entry.retain(|t| t.name != *company); [INFO] [stderr] ... | [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 262 | else if let Action::RemoveCompany {ref company} = *act { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/game.rs:288:34 [INFO] [stderr] | [INFO] [stderr] 288 | pub fn top_tiles<'a>(placed: &'a HashMap<(u32, u32), PlacedTile>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 288 | pub fn top_tiles<'a, S: ::std::hash::BuildHasher>(placed: &'a HashMap<(u32, u32), PlacedTile, S>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/game.rs:289:33 [INFO] [stderr] | [INFO] [stderr] 289 | tiles: &'a HashMap<(u32, u32), &tile::TileSpec>) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 288 | pub fn top_tiles<'a, S: ::std::hash::BuildHasher + Default>(placed: &'a HashMap<(u32, u32), PlacedTile>, [INFO] [stderr] 289 | tiles: &'a HashMap<(u32, u32), &tile::TileSpec, S>) [INFO] [stderr] | [INFO] [stderr] help: ...and use generic constructor [INFO] [stderr] | [INFO] [stderr] 292 | let mut map: HashMap<(u32, u32), &tile::TileSpec> = HashMap::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/game.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | pub fn get_tile(&self, name: &String) -> Result<&tile::Tile, String> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:324:9 [INFO] [stderr] | [INFO] [stderr] 324 | / match log { [INFO] [stderr] 325 | | // Don't bother with the amount if there is no log [INFO] [stderr] 326 | | &None => self.amounts.clone(), [INFO] [stderr] 327 | | &Some(ref log) => { [INFO] [stderr] ... | [INFO] [stderr] 349 | | [INFO] [stderr] 350 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 324 | match *log { [INFO] [stderr] 325 | // Don't bother with the amount if there is no log [INFO] [stderr] 326 | None => self.amounts.clone(), [INFO] [stderr] 327 | Some(ref log) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:331:21 [INFO] [stderr] | [INFO] [stderr] 331 | / if let &Action::TileLay{ref location, ref tile, [INFO] [stderr] 332 | | ..} = action { [INFO] [stderr] 333 | | // For calculating manifest amounts we don't care about [INFO] [stderr] 334 | | // the exact rendered position, just the coordinate so [INFO] [stderr] ... | [INFO] [stderr] 342 | | *used.entry(tile).or_insert(0) += 1; [INFO] [stderr] 343 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 331 | if let Action::TileLay{ref location, ref tile, [INFO] [stderr] 332 | ..} = *action { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `game::Log` [INFO] [stderr] --> src/game.rs:523:5 [INFO] [stderr] | [INFO] [stderr] 523 | / pub fn new() -> Log { [INFO] [stderr] 524 | | Log { [INFO] [stderr] 525 | | game_name: "1830".to_string(), [INFO] [stderr] 526 | | log: Box::new([]), [INFO] [stderr] 527 | | } [INFO] [stderr] 528 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 517 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/game.rs:385:8 [INFO] [stderr] | [INFO] [stderr] 385 | / match &self.color { [INFO] [stderr] 386 | | &None => tile::colors::GROUND, [INFO] [stderr] 387 | | &Some(ref c) => tile::colors::name_to_color(&c), [INFO] [stderr] 388 | | } [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 385 | match self.color { [INFO] [stderr] 386 | None => tile::colors::GROUND, [INFO] [stderr] 387 | Some(ref c) => tile::colors::name_to_color(&c), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/game.rs:443:8 [INFO] [stderr] | [INFO] [stderr] 443 | / match &self.orientation { [INFO] [stderr] 444 | | &None => 0.0, [INFO] [stderr] 445 | | &Some(ref o) => tile::direction_to_angle(o), [INFO] [stderr] 446 | | } [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 443 | match self.orientation { [INFO] [stderr] 444 | None => 0.0, [INFO] [stderr] 445 | Some(ref o) => tile::direction_to_angle(o), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/game.rs:450:8 [INFO] [stderr] | [INFO] [stderr] 450 | / match &self.arrows { [INFO] [stderr] 451 | | &None => vec![], [INFO] [stderr] 452 | | &Some(ref arrows) => arrows.to_vec(), [INFO] [stderr] 453 | | } [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 450 | match self.arrows { [INFO] [stderr] 451 | None => vec![], [INFO] [stderr] 452 | Some(ref arrows) => arrows.to_vec(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `game::Log` [INFO] [stderr] --> src/game.rs:523:5 [INFO] [stderr] | [INFO] [stderr] 523 | / pub fn new() -> Log { [INFO] [stderr] 524 | | Log { [INFO] [stderr] 525 | | game_name: "1830".to_string(), [INFO] [stderr] 526 | | log: Box::new([]), [INFO] [stderr] 527 | | } [INFO] [stderr] 528 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 517 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:601:9 [INFO] [stderr] | [INFO] [stderr] 601 | / match home { [INFO] [stderr] 602 | | &Home::PositionOnly(ref loc) => [INFO] [stderr] 603 | | token.location = loc.as_coord(orientation), [INFO] [stderr] 604 | | &Home::PositionStation(ref loc, s) => { [INFO] [stderr] ... | [INFO] [stderr] 607 | | } [INFO] [stderr] 608 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 601 | match *home { [INFO] [stderr] 602 | Home::PositionOnly(ref loc) => [INFO] [stderr] 603 | token.location = loc.as_coord(orientation), [INFO] [stderr] 604 | Home::PositionStation(ref loc, s) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/tile.rs:63:32 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn name_to_color(name: &String) -> Color { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tile.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / match self { [INFO] [stderr] 125 | | &Coordinate::Named(ref name) => edge_to_coordinate(name.as_ref()), [INFO] [stderr] 126 | | &Coordinate::HexSpace(ref pos) => [INFO] [stderr] 127 | | na::Vector3::new(pos.0, pos.1, pos.2), [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 124 | match *self { [INFO] [stderr] 125 | Coordinate::Named(ref name) => edge_to_coordinate(name.as_ref()), [INFO] [stderr] 126 | Coordinate::HexSpace(ref pos) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tile.rs:198:9 [INFO] [stderr] | [INFO] [stderr] 198 | self.text.get("number").unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.text["number"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/tile.rs:355:66 [INFO] [stderr] | [INFO] [stderr] 355 | start.chars().nth(0) != end.chars().nth(0) { [INFO] [stderr] | __________________________________________________________________^ [INFO] [stderr] 356 | | // N-SE, N-SW, etc. [INFO] [stderr] 357 | | return gentle_curve [INFO] [stderr] 358 | | } [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/tile.rs:350:60 [INFO] [stderr] | [INFO] [stderr] 350 | start.chars().nth(0) == end.chars().nth(0) { [INFO] [stderr] | ____________________________________________________________^ [INFO] [stderr] 351 | | // NW-NE, SW-SE [INFO] [stderr] 352 | | return gentle_curve [INFO] [stderr] 353 | | } else if ((start.len() == 2 && end.len() == 1) || [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/game.rs:601:9 [INFO] [stderr] | [INFO] [stderr] 601 | / match home { [INFO] [stderr] 602 | | &Home::PositionOnly(ref loc) => [INFO] [stderr] 603 | | token.location = loc.as_coord(orientation), [INFO] [stderr] 604 | | &Home::PositionStation(ref loc, s) => { [INFO] [stderr] ... | [INFO] [stderr] 607 | | } [INFO] [stderr] 608 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 601 | match *home { [INFO] [stderr] 602 | Home::PositionOnly(ref loc) => [INFO] [stderr] 603 | token.location = loc.as_coord(orientation), [INFO] [stderr] 604 | Home::PositionStation(ref loc, s) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/tile.rs:63:32 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn name_to_color(name: &String) -> Color { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tile.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / match self { [INFO] [stderr] 125 | | &Coordinate::Named(ref name) => edge_to_coordinate(name.as_ref()), [INFO] [stderr] 126 | | &Coordinate::HexSpace(ref pos) => [INFO] [stderr] 127 | | na::Vector3::new(pos.0, pos.1, pos.2), [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 124 | match *self { [INFO] [stderr] 125 | Coordinate::Named(ref name) => edge_to_coordinate(name.as_ref()), [INFO] [stderr] 126 | Coordinate::HexSpace(ref pos) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tile.rs:198:9 [INFO] [stderr] | [INFO] [stderr] 198 | self.text.get("number").unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.text["number"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `Options` [INFO] [stderr] --> src/lib.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Options { [INFO] [stderr] 22 | | Options { [INFO] [stderr] 23 | | verbose: false, [INFO] [stderr] 24 | | debug_coordinates: false, [INFO] [stderr] 25 | | } [INFO] [stderr] 26 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `AssetOptions` [INFO] [stderr] --> src/lib.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> AssetOptions { [INFO] [stderr] 35 | | AssetOptions { [INFO] [stderr] 36 | | name: String::new(), [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 29 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `NewGameOptions` [INFO] [stderr] --> src/lib.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / pub fn new() -> NewGameOptions { [INFO] [stderr] 49 | | NewGameOptions { [INFO] [stderr] 50 | | game: String::new(), [INFO] [stderr] 51 | | name: String::new(), [INFO] [stderr] 52 | | overwrite: false, [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 41 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `StateOptions` [INFO] [stderr] --> src/lib.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | / pub fn new() -> StateOptions { [INFO] [stderr] 63 | | StateOptions { [INFO] [stderr] 64 | | name: String::new(), [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 57 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/tile.rs:355:66 [INFO] [stderr] | [INFO] [stderr] 355 | start.chars().nth(0) != end.chars().nth(0) { [INFO] [stderr] | __________________________________________________________________^ [INFO] [stderr] 356 | | // N-SE, N-SW, etc. [INFO] [stderr] 357 | | return gentle_curve [INFO] [stderr] 358 | | } [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/tile.rs:350:60 [INFO] [stderr] | [INFO] [stderr] 350 | start.chars().nth(0) == end.chars().nth(0) { [INFO] [stderr] | ____________________________________________________________^ [INFO] [stderr] 351 | | // NW-NE, SW-SE [INFO] [stderr] 352 | | return gentle_curve [INFO] [stderr] 353 | | } else if ((start.len() == 2 && end.len() == 1) || [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `map18xx`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `Options` [INFO] [stderr] --> src/lib.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Options { [INFO] [stderr] 22 | | Options { [INFO] [stderr] 23 | | verbose: false, [INFO] [stderr] 24 | | debug_coordinates: false, [INFO] [stderr] 25 | | } [INFO] [stderr] 26 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `AssetOptions` [INFO] [stderr] --> src/lib.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> AssetOptions { [INFO] [stderr] 35 | | AssetOptions { [INFO] [stderr] 36 | | name: String::new(), [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 29 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `NewGameOptions` [INFO] [stderr] --> src/lib.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / pub fn new() -> NewGameOptions { [INFO] [stderr] 49 | | NewGameOptions { [INFO] [stderr] 50 | | game: String::new(), [INFO] [stderr] 51 | | name: String::new(), [INFO] [stderr] 52 | | overwrite: false, [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 41 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `StateOptions` [INFO] [stderr] --> src/lib.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | / pub fn new() -> StateOptions { [INFO] [stderr] 63 | | StateOptions { [INFO] [stderr] 64 | | name: String::new(), [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 57 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `map18xx`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a03ecc300a1beaf7654db582c4295b8f882354c826483935f63148128df3db53"` [INFO] running `"docker" "rm" "-f" "a03ecc300a1beaf7654db582c4295b8f882354c826483935f63148128df3db53"` [INFO] [stdout] a03ecc300a1beaf7654db582c4295b8f882354c826483935f63148128df3db53