[INFO] updating cached repository derezzedex/first_gfx_game [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/derezzedex/first_gfx_game [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/derezzedex/first_gfx_game" "work/ex/clippy-test-run/sources/stable/gh/derezzedex/first_gfx_game"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/derezzedex/first_gfx_game'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/derezzedex/first_gfx_game" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derezzedex/first_gfx_game"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derezzedex/first_gfx_game'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] dee297b60dba69d8163f7363fa855f76e260764e [INFO] sha for GitHub repo derezzedex/first_gfx_game: dee297b60dba69d8163f7363fa855f76e260764e [INFO] validating manifest of derezzedex/first_gfx_game 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 derezzedex/first_gfx_game 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 derezzedex/first_gfx_game [INFO] finished frobbing derezzedex/first_gfx_game [INFO] frobbed toml for derezzedex/first_gfx_game written to work/ex/clippy-test-run/sources/stable/gh/derezzedex/first_gfx_game/Cargo.toml [INFO] started frobbing derezzedex/first_gfx_game [INFO] finished frobbing derezzedex/first_gfx_game [INFO] frobbed toml for derezzedex/first_gfx_game written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derezzedex/first_gfx_game/Cargo.toml [INFO] crate derezzedex/first_gfx_game 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 derezzedex/first_gfx_game against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/derezzedex/first_gfx_game:/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] 68b1bb0031e091e929fbefc94579c3a8da529cdf0677a4a2097989b667d18145 [INFO] running `"docker" "start" "-a" "68b1bb0031e091e929fbefc94579c3a8da529cdf0677a4a2097989b667d18145"` [INFO] [stderr] Compiling either v1.4.0 [INFO] [stderr] Compiling log v0.4.0 [INFO] [stderr] Checking cgmath v0.15.0 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Checking wayland-sys v0.8.7 [INFO] [stderr] Compiling itertools v0.5.10 [INFO] [stderr] Compiling log v0.3.9 [INFO] [stderr] Checking wayland-client v0.8.7 [INFO] [stderr] Compiling gl_generator v0.7.0 [INFO] [stderr] Compiling gl_generator v0.5.5 [INFO] [stderr] Compiling derivative v1.0.0 [INFO] [stderr] Checking wayland-window v0.5.0 [INFO] [stderr] Checking wayland-kbd v0.8.0 [INFO] [stderr] Compiling glutin v0.8.1 [INFO] [stderr] Compiling gfx_gl v0.4.0 [INFO] [stderr] Checking winit v0.6.4 [INFO] [stderr] Checking gfx_core v0.7.2 [INFO] [stderr] Checking gfx_device_gl v0.14.6 [INFO] [stderr] Checking gfx v0.16.2 [INFO] [stderr] Checking gfx_window_glutin v0.16.0 [INFO] [stderr] Checking first_gfx_game v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/main.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread::sleep` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::thread::sleep; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:255:55 [INFO] [stderr] | [INFO] [stderr] 255 | events_loop.poll_events(|glutin::Event::WindowEvent{window_id: _, event}| { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `WindowEvent { event, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:324:35 [INFO] [stderr] | [INFO] [stderr] 324 | encoder.clear(&data.out_color, [0.156863, 0.156863, 0.156863, 1.0]); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.156_863` [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/main.rs:324:45 [INFO] [stderr] | [INFO] [stderr] 324 | encoder.clear(&data.out_color, [0.156863, 0.156863, 0.156863, 1.0]); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.156_863` [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/main.rs:324:55 [INFO] [stderr] | [INFO] [stderr] 324 | encoder.clear(&data.out_color, [0.156863, 0.156863, 0.156863, 1.0]); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.156_863` [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: unnecessary parentheses around assigned value [INFO] [stderr] --> src/main.rs:329:12 [INFO] [stderr] | [INFO] [stderr] 329 | let pv = (proj * view(cameraPos, cameraPos + cameraFront)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:260:22 [INFO] [stderr] | [INFO] [stderr] 260 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::W), _) => {rec = true;cameraPos+=(camera_speed)*cameraFront;}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:261:22 [INFO] [stderr] | [INFO] [stderr] 261 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::S), _) => {rec = true;cameraPos-=(camera_speed)*cameraFront;}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:262:22 [INFO] [stderr] | [INFO] [stderr] 262 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::A), _) => {rec = true;cameraPos-=normalize(cameraFront.cross(Vector3::new(0.0f32, 1.0, 0.0)))*camera_speed}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:263:22 [INFO] [stderr] | [INFO] [stderr] 263 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::D), _) => {rec = true;cameraPos+=normalize(cameraFront.cross(Vector3::new(0.0f32, 1.0, 0.0)))*camera_speed}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:212:6 [INFO] [stderr] | [INFO] [stderr] 212 | let pressed = glutin::ElementState::Pressed; [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `released` [INFO] [stderr] --> src/main.rs:213:6 [INFO] [stderr] | [INFO] [stderr] 213 | let released = glutin::ElementState::Released; [INFO] [stderr] | ^^^^^^^^ help: consider using `_released` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `dT` is never read [INFO] [stderr] --> src/main.rs:226:10 [INFO] [stderr] | [INFO] [stderr] 226 | let mut dT = 0.0f32; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `firstMouse` [INFO] [stderr] --> src/main.rs:230:10 [INFO] [stderr] | [INFO] [stderr] 230 | let mut firstMouse = true; [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_firstMouse` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `do_test` [INFO] [stderr] --> src/main.rs:231:10 [INFO] [stderr] | [INFO] [stderr] 231 | let mut do_test = false; [INFO] [stderr] | ^^^^^^^ help: consider using `_do_test` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frames` [INFO] [stderr] --> src/main.rs:244:10 [INFO] [stderr] | [INFO] [stderr] 244 | let mut frames = 0u32; [INFO] [stderr] | ^^^^^^ help: consider using `_frames` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:162:6 [INFO] [stderr] | [INFO] [stderr] 162 | let mut game_title = "FGG Test"; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:170:52 [INFO] [stderr] | [INFO] [stderr] 170 | let (window, mut device, mut factory, main_color, mut main_depth) = gfx_glutin::init::(builder, &events_loop); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:190:6 [INFO] [stderr] | [INFO] [stderr] 190 | let mut rasterizer = gfx::state::Rasterizer::new_fill().with_cull_back(); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:210:6 [INFO] [stderr] | [INFO] [stderr] 210 | let mut model_position = Matrix4::from_translation(Vector3::new(0.0f32, 0.0, 0.0)); [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:228:6 [INFO] [stderr] | [INFO] [stderr] 228 | let mut currentFrame = time::PreciseTime::now(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:230:6 [INFO] [stderr] | [INFO] [stderr] 230 | let mut firstMouse = true; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:231:6 [INFO] [stderr] | [INFO] [stderr] 231 | let mut do_test = false; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:244:6 [INFO] [stderr] | [INFO] [stderr] 244 | let mut frames = 0u32; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:247:7 [INFO] [stderr] | [INFO] [stderr] 247 | let mut currentFrame = currentFrame.to(time::PreciseTime::now()); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:253:7 [INFO] [stderr] | [INFO] [stderr] 253 | let mut new_game_title = game_title.to_owned()+" | dt: "+ &dT.to_string(); [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `deal_with_mouse` [INFO] [stderr] --> src/main.rs:71:1 [INFO] [stderr] | [INFO] [stderr] 71 | fn deal_with_mouse(py: (f32, f32), last: (f32, f32), x: i32, y: i32, fmouse: bool) -> (Vector3, bool, f32, f32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/main.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread::sleep` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::thread::sleep; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:255:55 [INFO] [stderr] | [INFO] [stderr] 255 | events_loop.poll_events(|glutin::Event::WindowEvent{window_id: _, event}| { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `WindowEvent { event, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:324:35 [INFO] [stderr] | [INFO] [stderr] 324 | encoder.clear(&data.out_color, [0.156863, 0.156863, 0.156863, 1.0]); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.156_863` [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/main.rs:324:45 [INFO] [stderr] | [INFO] [stderr] 324 | encoder.clear(&data.out_color, [0.156863, 0.156863, 0.156863, 1.0]); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.156_863` [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/main.rs:324:55 [INFO] [stderr] | [INFO] [stderr] 324 | encoder.clear(&data.out_color, [0.156863, 0.156863, 0.156863, 1.0]); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.156_863` [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: unnecessary parentheses around assigned value [INFO] [stderr] --> src/main.rs:329:12 [INFO] [stderr] | [INFO] [stderr] 329 | let pv = (proj * view(cameraPos, cameraPos + cameraFront)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: casting i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:45:19 [INFO] [stderr] | [INFO] [stderr] 45 | pos: [p[0] as f32, p[1] as f32, p[2] as f32, 1.0], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(p[0])` [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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:45:32 [INFO] [stderr] | [INFO] [stderr] 45 | pos: [p[0] as f32, p[1] as f32, p[2] as f32, 1.0], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(p[1])` [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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:45:45 [INFO] [stderr] | [INFO] [stderr] 45 | pos: [p[0] as f32, p[1] as f32, p[2] as f32, 1.0], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(p[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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | tex_coord: [t[0] as f32, t[1] as f32], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(t[0])` [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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:46:38 [INFO] [stderr] | [INFO] [stderr] 46 | tex_coord: [t[0] as f32, t[1] as f32], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(t[1])` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:78:2 [INFO] [stderr] | [INFO] [stderr] 78 | let mut fm = fmouse; [INFO] [stderr] | _____^ [INFO] [stderr] 79 | | [INFO] [stderr] 80 | | if fm{ [INFO] [stderr] 81 | | lastX = x as f32; [INFO] [stderr] 82 | | lastY = y as f32; [INFO] [stderr] 83 | | fm = false; [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let fm = if fm { ..; false } else { fmouse };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: variable `lX` should have a snake case name such as `l_x` [INFO] [stderr] --> src/main.rs:72:7 [INFO] [stderr] | [INFO] [stderr] 72 | let (lX, lY) = last; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `lY` should have a snake case name such as `l_y` [INFO] [stderr] --> src/main.rs:72:11 [INFO] [stderr] | [INFO] [stderr] 72 | let (lX, lY) = last; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastX` should have a snake case name such as `last_x` [INFO] [stderr] --> src/main.rs:73:6 [INFO] [stderr] | [INFO] [stderr] 73 | let mut lastX = lX as f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastY` should have a snake case name such as `last_y` [INFO] [stderr] --> src/main.rs:74:6 [INFO] [stderr] | [INFO] [stderr] 74 | let mut lastY = lY as f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `cameraPos` should have a snake case name such as `camera_pos` [INFO] [stderr] --> src/main.rs:207:6 [INFO] [stderr] | [INFO] [stderr] 207 | let mut cameraPos = Vector3::new(0.0f32, 0.0, 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `cameraFront` should have a snake case name such as `camera_front` [INFO] [stderr] --> src/main.rs:208:6 [INFO] [stderr] | [INFO] [stderr] 208 | let mut cameraFront = Vector3::new(0.0f32, 0.0, -1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `dT` should have a snake case name such as `d_t` [INFO] [stderr] --> src/main.rs:226:6 [INFO] [stderr] | [INFO] [stderr] 226 | let mut dT = 0.0f32; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastFrame` should have a snake case name such as `last_frame` [INFO] [stderr] --> src/main.rs:227:6 [INFO] [stderr] | [INFO] [stderr] 227 | let mut lastFrame = time::Duration::milliseconds(0); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `currentFrame` should have a snake case name such as `current_frame` [INFO] [stderr] --> src/main.rs:228:6 [INFO] [stderr] | [INFO] [stderr] 228 | let mut currentFrame = time::PreciseTime::now(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `firstMouse` should have a snake case name such as `first_mouse` [INFO] [stderr] --> src/main.rs:230:6 [INFO] [stderr] | [INFO] [stderr] 230 | let mut firstMouse = true; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastX` should have a snake case name such as `last_x` [INFO] [stderr] --> src/main.rs:236:6 [INFO] [stderr] | [INFO] [stderr] 236 | let mut lastX = 400.0f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastY` should have a snake case name such as `last_y` [INFO] [stderr] --> src/main.rs:237:6 [INFO] [stderr] | [INFO] [stderr] 237 | let mut lastY = 300.0f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:240:2 [INFO] [stderr] | [INFO] [stderr] 240 | window.set_cursor_state(glutin::CursorState::Grab); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable `currentFrame` should have a snake case name such as `current_frame` [INFO] [stderr] --> src/main.rs:247:7 [INFO] [stderr] | [INFO] [stderr] 247 | let mut currentFrame = currentFrame.to(time::PreciseTime::now()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `duration_dT` should have a snake case name such as `duration_d_t` [INFO] [stderr] --> src/main.rs:248:7 [INFO] [stderr] | [INFO] [stderr] 248 | let duration_dT = currentFrame - lastFrame; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:280:6 [INFO] [stderr] | [INFO] [stderr] 280 | window.set_cursor_position(hw, hh); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:260:22 [INFO] [stderr] | [INFO] [stderr] 260 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::W), _) => {rec = true;cameraPos+=(camera_speed)*cameraFront;}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:261:22 [INFO] [stderr] | [INFO] [stderr] 261 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::S), _) => {rec = true;cameraPos-=(camera_speed)*cameraFront;}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:262:22 [INFO] [stderr] | [INFO] [stderr] 262 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::A), _) => {rec = true;cameraPos-=normalize(cameraFront.cross(Vector3::new(0.0f32, 1.0, 0.0)))*camera_speed}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:263:22 [INFO] [stderr] | [INFO] [stderr] 263 | KeyboardInput(_, pressed, Some(glutin::VirtualKeyCode::D), _) => {rec = true;cameraPos+=normalize(cameraFront.cross(Vector3::new(0.0f32, 1.0, 0.0)))*camera_speed}, [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pressed` [INFO] [stderr] --> src/main.rs:212:6 [INFO] [stderr] | [INFO] [stderr] 212 | let pressed = glutin::ElementState::Pressed; [INFO] [stderr] | ^^^^^^^ help: consider using `_pressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `released` [INFO] [stderr] --> src/main.rs:213:6 [INFO] [stderr] | [INFO] [stderr] 213 | let released = glutin::ElementState::Released; [INFO] [stderr] | ^^^^^^^^ help: consider using `_released` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `dT` is never read [INFO] [stderr] --> src/main.rs:226:10 [INFO] [stderr] | [INFO] [stderr] 226 | let mut dT = 0.0f32; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `firstMouse` [INFO] [stderr] --> src/main.rs:230:10 [INFO] [stderr] | [INFO] [stderr] 230 | let mut firstMouse = true; [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_firstMouse` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `do_test` [INFO] [stderr] --> src/main.rs:231:10 [INFO] [stderr] | [INFO] [stderr] 231 | let mut do_test = false; [INFO] [stderr] | ^^^^^^^ help: consider using `_do_test` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `frames` [INFO] [stderr] --> src/main.rs:244:10 [INFO] [stderr] | [INFO] [stderr] 244 | let mut frames = 0u32; [INFO] [stderr] | ^^^^^^ help: consider using `_frames` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:162:6 [INFO] [stderr] | [INFO] [stderr] 162 | let mut game_title = "FGG Test"; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:170:52 [INFO] [stderr] | [INFO] [stderr] 170 | let (window, mut device, mut factory, main_color, mut main_depth) = gfx_glutin::init::(builder, &events_loop); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:190:6 [INFO] [stderr] | [INFO] [stderr] 190 | let mut rasterizer = gfx::state::Rasterizer::new_fill().with_cull_back(); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:210:6 [INFO] [stderr] | [INFO] [stderr] 210 | let mut model_position = Matrix4::from_translation(Vector3::new(0.0f32, 0.0, 0.0)); [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:228:6 [INFO] [stderr] | [INFO] [stderr] 228 | let mut currentFrame = time::PreciseTime::now(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:230:6 [INFO] [stderr] | [INFO] [stderr] 230 | let mut firstMouse = true; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:231:6 [INFO] [stderr] | [INFO] [stderr] 231 | let mut do_test = false; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:244:6 [INFO] [stderr] | [INFO] [stderr] 244 | let mut frames = 0u32; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:247:7 [INFO] [stderr] | [INFO] [stderr] 247 | let mut currentFrame = currentFrame.to(time::PreciseTime::now()); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:253:7 [INFO] [stderr] | [INFO] [stderr] 253 | let mut new_game_title = game_title.to_owned()+" | dt: "+ &dT.to_string(); [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `deal_with_mouse` [INFO] [stderr] --> src/main.rs:71:1 [INFO] [stderr] | [INFO] [stderr] 71 | fn deal_with_mouse(py: (f32, f32), last: (f32, f32), x: i32, y: i32, fmouse: bool) -> (Vector3, bool, f32, f32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: casting i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:45:19 [INFO] [stderr] | [INFO] [stderr] 45 | pos: [p[0] as f32, p[1] as f32, p[2] as f32, 1.0], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(p[0])` [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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:45:32 [INFO] [stderr] | [INFO] [stderr] 45 | pos: [p[0] as f32, p[1] as f32, p[2] as f32, 1.0], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(p[1])` [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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:45:45 [INFO] [stderr] | [INFO] [stderr] 45 | pos: [p[0] as f32, p[1] as f32, p[2] as f32, 1.0], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(p[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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | tex_coord: [t[0] as f32, t[1] as f32], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(t[0])` [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 i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:46:38 [INFO] [stderr] | [INFO] [stderr] 46 | tex_coord: [t[0] as f32, t[1] as f32], [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(t[1])` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:78:2 [INFO] [stderr] | [INFO] [stderr] 78 | let mut fm = fmouse; [INFO] [stderr] | _____^ [INFO] [stderr] 79 | | [INFO] [stderr] 80 | | if fm{ [INFO] [stderr] 81 | | lastX = x as f32; [INFO] [stderr] 82 | | lastY = y as f32; [INFO] [stderr] 83 | | fm = false; [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let fm = if fm { ..; false } else { fmouse };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: variable `lX` should have a snake case name such as `l_x` [INFO] [stderr] --> src/main.rs:72:7 [INFO] [stderr] | [INFO] [stderr] 72 | let (lX, lY) = last; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `lY` should have a snake case name such as `l_y` [INFO] [stderr] --> src/main.rs:72:11 [INFO] [stderr] | [INFO] [stderr] 72 | let (lX, lY) = last; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastX` should have a snake case name such as `last_x` [INFO] [stderr] --> src/main.rs:73:6 [INFO] [stderr] | [INFO] [stderr] 73 | let mut lastX = lX as f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastY` should have a snake case name such as `last_y` [INFO] [stderr] --> src/main.rs:74:6 [INFO] [stderr] | [INFO] [stderr] 74 | let mut lastY = lY as f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `cameraPos` should have a snake case name such as `camera_pos` [INFO] [stderr] --> src/main.rs:207:6 [INFO] [stderr] | [INFO] [stderr] 207 | let mut cameraPos = Vector3::new(0.0f32, 0.0, 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `cameraFront` should have a snake case name such as `camera_front` [INFO] [stderr] --> src/main.rs:208:6 [INFO] [stderr] | [INFO] [stderr] 208 | let mut cameraFront = Vector3::new(0.0f32, 0.0, -1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `dT` should have a snake case name such as `d_t` [INFO] [stderr] --> src/main.rs:226:6 [INFO] [stderr] | [INFO] [stderr] 226 | let mut dT = 0.0f32; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastFrame` should have a snake case name such as `last_frame` [INFO] [stderr] --> src/main.rs:227:6 [INFO] [stderr] | [INFO] [stderr] 227 | let mut lastFrame = time::Duration::milliseconds(0); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `currentFrame` should have a snake case name such as `current_frame` [INFO] [stderr] --> src/main.rs:228:6 [INFO] [stderr] | [INFO] [stderr] 228 | let mut currentFrame = time::PreciseTime::now(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `firstMouse` should have a snake case name such as `first_mouse` [INFO] [stderr] --> src/main.rs:230:6 [INFO] [stderr] | [INFO] [stderr] 230 | let mut firstMouse = true; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastX` should have a snake case name such as `last_x` [INFO] [stderr] --> src/main.rs:236:6 [INFO] [stderr] | [INFO] [stderr] 236 | let mut lastX = 400.0f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `lastY` should have a snake case name such as `last_y` [INFO] [stderr] --> src/main.rs:237:6 [INFO] [stderr] | [INFO] [stderr] 237 | let mut lastY = 300.0f32; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:240:2 [INFO] [stderr] | [INFO] [stderr] 240 | window.set_cursor_state(glutin::CursorState::Grab); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable `currentFrame` should have a snake case name such as `current_frame` [INFO] [stderr] --> src/main.rs:247:7 [INFO] [stderr] | [INFO] [stderr] 247 | let mut currentFrame = currentFrame.to(time::PreciseTime::now()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `duration_dT` should have a snake case name such as `duration_d_t` [INFO] [stderr] --> src/main.rs:248:7 [INFO] [stderr] | [INFO] [stderr] 248 | let duration_dT = currentFrame - lastFrame; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:280:6 [INFO] [stderr] | [INFO] [stderr] 280 | window.set_cursor_position(hw, hh); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 56.42s [INFO] running `"docker" "inspect" "68b1bb0031e091e929fbefc94579c3a8da529cdf0677a4a2097989b667d18145"` [INFO] running `"docker" "rm" "-f" "68b1bb0031e091e929fbefc94579c3a8da529cdf0677a4a2097989b667d18145"` [INFO] [stdout] 68b1bb0031e091e929fbefc94579c3a8da529cdf0677a4a2097989b667d18145