[INFO] cloning repository https://github.com/diespeso/battle_gui [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/diespeso/battle_gui" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdiespeso%2Fbattle_gui"` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdiespeso%2Fbattle_gui'... [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 68af67ff418feb4958603c0764fcee7a54ba5ef3 [INFO] testing diespeso/battle_gui against 1.44.0 for beta-1.45-1 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdiespeso%2Fbattle_gui" "/workspace/builds/worker-9/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-9/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/diespeso/battle_gui on toolchain 1.44.0 [INFO] running `"/workspace/cargo-home/bin/cargo" "+1.44.0" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/diespeso/battle_gui [INFO] finished tweaking git repo https://github.com/diespeso/battle_gui [INFO] tweaked toml for git repo https://github.com/diespeso/battle_gui written to /workspace/builds/worker-9/source/Cargo.toml [INFO] crate git repo https://github.com/diespeso/battle_gui already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+1.44.0" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+1.44.0" "build" "--frozen"` [INFO] [stdout] 11244daea91028c756be7c558ea12c1b8e9d9f4be9cb8d611087e1d289a1bec2 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `"docker" "start" "-a" "11244daea91028c756be7c558ea12c1b8e9d9f4be9cb8d611087e1d289a1bec2"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] Compiling libc v0.2.71 [INFO] [stderr] Compiling libm v0.2.1 [INFO] [stderr] Compiling syn v0.15.44 [INFO] [stderr] Compiling proc-macro2 v1.0.17 [INFO] [stderr] Compiling syn v1.0.28 [INFO] [stderr] Compiling uuid v0.8.1 [INFO] [stderr] Compiling mint v0.5.5 [INFO] [stderr] Compiling podio v0.1.7 [INFO] [stderr] Compiling num-traits v0.2.11 [INFO] [stderr] Compiling serde v1.0.110 [INFO] [stderr] Compiling libudev-sys v0.1.4 [INFO] [stderr] Compiling bzip2-sys v0.1.9+1.0.8 [INFO] [stderr] Compiling nix v0.15.0 [INFO] [stderr] Compiling jpeg-decoder v0.1.19 [INFO] [stderr] Compiling quote v1.0.6 [INFO] [stderr] Compiling approx v0.3.2 [INFO] [stderr] Compiling ordered-float v1.0.2 [INFO] [stderr] Compiling num-integer v0.1.42 [INFO] [stderr] Compiling line_drawing v0.7.0 [INFO] [stderr] Compiling num-traits v0.1.43 [INFO] [stderr] Compiling num-complex v0.2.4 [INFO] [stderr] Compiling sid v0.5.2 [INFO] [stderr] Compiling num-rational v0.2.4 [INFO] [stderr] Compiling num-iter v0.1.40 [INFO] [stderr] Compiling alga v0.9.3 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling nix v0.14.1 [INFO] [stderr] Compiling getrandom v0.1.14 [INFO] [stderr] Compiling backtrace v0.3.48 [INFO] [stderr] Compiling rand v0.4.6 [INFO] [stderr] Compiling memmap v0.7.0 [INFO] [stderr] Compiling x11-dl v2.18.5 [INFO] [stderr] Compiling raw-window-handle v0.3.3 [INFO] [stderr] Compiling rand_os v0.1.3 [INFO] [stderr] Compiling shared_library v0.1.9 [INFO] [stderr] Compiling alsa-sys v0.1.2 [INFO] [stderr] Compiling slice-deque v0.3.0 [INFO] [stderr] Compiling dirs-sys v0.3.4 [INFO] [stderr] Compiling osmesa-sys v0.1.2 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Compiling rusttype v0.8.3 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling cpal v0.8.2 [INFO] [stderr] Compiling bzip2 v0.3.3 [INFO] [stderr] Compiling error-chain v0.12.2 [INFO] [stderr] Compiling directories v2.0.2 [INFO] [stderr] Compiling tempdir v0.3.7 [INFO] [stderr] Compiling minimp3 v0.3.5 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling zip v0.5.5 [INFO] [stderr] Compiling rusttype v0.7.9 [INFO] [stderr] Compiling glyph_brush_layout v0.1.9 [INFO] [stderr] Compiling andrew v0.2.1 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling nalgebra v0.18.1 [INFO] [stderr] Compiling glutin_glx_sys v0.1.6 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Compiling serde_json v1.0.53 [INFO] [stderr] Compiling toml v0.5.6 [INFO] [stderr] Compiling twox-hash v1.5.0 [INFO] [stderr] Compiling euclid_macros v0.1.0 [INFO] [stderr] Compiling num-derive v0.2.5 [INFO] [stderr] Compiling smart-default v0.5.2 [INFO] [stderr] Compiling glyph_brush v0.6.3 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Compiling glyph_brush v0.5.4 [INFO] [stderr] Compiling parking_lot_core v0.6.2 [INFO] [stderr] Compiling parking_lot v0.9.0 [INFO] [stderr] Compiling wayland-commons v0.21.13 [INFO] [stderr] Compiling wayland-client v0.21.13 [INFO] [stderr] Compiling euclid v0.19.9 [INFO] [stderr] Compiling gilrs-core v0.2.6 [INFO] [stderr] Compiling serde_derive v1.0.110 [INFO] [stderr] Compiling lyon_geom v0.12.7 [INFO] [stderr] Compiling gilrs v0.7.4 [INFO] [stderr] Compiling wayland-protocols v0.21.13 [INFO] [stderr] Compiling tiff v0.3.1 [INFO] [stderr] Compiling image v0.22.5 [INFO] [stderr] Compiling lyon_path v0.13.2 [INFO] [stderr] Compiling lyon_algorithms v0.13.4 [INFO] [stderr] Compiling lyon_tessellation v0.13.5 [INFO] [stderr] Compiling lyon v0.13.5 [INFO] [stderr] Compiling smithay-client-toolkit v0.4.6 [INFO] [stderr] Compiling winit v0.19.5 [INFO] [stderr] Compiling glutin v0.20.1 [INFO] [stderr] Compiling cargo_metadata v0.6.4 [INFO] [stderr] Compiling gfx_window_glutin v0.30.0 [INFO] [stderr] Compiling skeptic v0.13.4 [INFO] [stderr] Compiling ggez v0.5.1 [INFO] [stderr] Compiling rodio v0.9.0 [INFO] [stderr] Compiling game v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused import: `Image` [INFO] [stderr] --> src/utils.rs:4:28 [INFO] [stderr] | [INFO] [stderr] 4 | use ggez::graphics::{Rect, Image, Drawable}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Image`, `self` [INFO] [stderr] --> src/sprite.rs:5:22 [INFO] [stderr] | [INFO] [stderr] 5 | use ggez::graphics::{self, Drawable, DrawParam, Image}; [INFO] [stderr] | ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TextFragment` [INFO] [stderr] --> src/gui.rs:6:8 [INFO] [stderr] | [INFO] [stderr] 6 | Text, TextFragment}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ContextBuilder` [INFO] [stderr] --> src/game.rs:1:21 [INFO] [stderr] | [INFO] [stderr] 1 | use ggez::{Context, ContextBuilder, GameResult}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/game.rs:2:19 [INFO] [stderr] | [INFO] [stderr] 2 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Status` [INFO] [stderr] --> src/game.rs:5:18 [INFO] [stderr] | [INFO] [stderr] 5 | use super::gui::{Status, StatusCard}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Context`, `GameResult` [INFO] [stderr] --> src/main.rs:8:12 [INFO] [stderr] | [INFO] [stderr] 8 | use ggez::{Context, GameResult, ContextBuilder}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EventHandler` [INFO] [stderr] --> src/main.rs:9:25 [INFO] [stderr] | [INFO] [stderr] 9 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/main.rs:10:28 [INFO] [stderr] | [INFO] [stderr] 10 | use ggez::graphics::{self, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::filesystem` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use ggez::filesystem; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/utils.rs:4:35 [INFO] [stderr] | [INFO] [stderr] 4 | use ggez::graphics::{Rect, Image, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/gui.rs:117:23 [INFO] [stderr] | [INFO] [stderr] 117 | fn dimensions(&self, ctx: &mut Context) -> Option { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mode` [INFO] [stderr] --> src/gui.rs:121:31 [INFO] [stderr] | [INFO] [stderr] 121 | fn set_blend_mode(&mut self, mode: Option) { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/game.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new(ctx: &mut Context) -> Self { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/game.rs:26:23 [INFO] [stderr] | [INFO] [stderr] 26 | fn update(&mut self, ctx: &mut Context) -> GameResult<()> { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | let mut sprite_data = SpriteData::new(image.clone()); [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:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let mut sprite = Sprite::from_data(sprite_data); [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/utils.rs:15:6 [INFO] [stderr] | [INFO] [stderr] 15 | let mut result: Vec = pos.split(' ').map(|x| x.to_string()).collect(); [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/utils.rs:16:6 [INFO] [stderr] | [INFO] [stderr] 16 | let mut result: Point2 = Point2::::from_slice( [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/tileset_parser.rs:124:6 [INFO] [stderr] | [INFO] [stderr] 124 | let mut f = File::open(path)?; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `from_str_to_point2f` [INFO] [stderr] --> src/utils.rs:14:8 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn from_str_to_point2f(pos: String) -> Point2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `clean_empty` [INFO] [stderr] --> src/utils.rs:24:8 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn clean_empty(source: &mut Vec<(String, Vec)>) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `from_drawable` [INFO] [stderr] --> src/sprite.rs:50:2 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn from_drawable(drawable: Rc>) [INFO] [stderr] | _____^ [INFO] [stderr] 51 | | -> Self { [INFO] [stderr] 52 | | Self { [INFO] [stderr] 53 | | data: SpriteData::new(drawable), [INFO] [stderr] 54 | | param: Default::default(), [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `draw_param_mut` [INFO] [stderr] --> src/sprite.rs:58:2 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn draw_param_mut(&mut self) -> &mut DrawParam { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `pos_mut` [INFO] [stderr] --> src/sprite.rs:75:2 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn pos_mut(&mut self) -> &mut Point2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/gui.rs:22:2 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn new(name: &'static str, hp: i32) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `hp` [INFO] [stderr] --> src/gui.rs:29:2 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn hp(&self) -> Rc> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `with_status` [INFO] [stderr] --> src/gui.rs:58:2 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn with_status(mut self, status: Status) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `with_portrait` [INFO] [stderr] --> src/gui.rs:67:2 [INFO] [stderr] | [INFO] [stderr] 67 | pub fn with_portrait(mut self, ctx: &mut Context, mut sprite: Sprite) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_status` [INFO] [stderr] --> src/gui.rs:80:2 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn get_status(&self) -> Option<&Status> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `FILE_EXTENSION` [INFO] [stderr] --> src/tileset_parser.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | static FILE_EXTENSION: &str = ".tc"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/tileset_parser.rs:26:2 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_from_info` [INFO] [stderr] --> src/tileset_parser.rs:33:2 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn add_from_info(&mut self, info: HashMap) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_from_data` [INFO] [stderr] --> src/tileset_parser.rs:50:2 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn add_from_data(&mut self, data: (String, TilesetData)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/tileset_parser.rs:73:2 [INFO] [stderr] | [INFO] [stderr] 73 | pub fn new(_type: TilesetType, pos: Point2, size: Point2) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `from_data` [INFO] [stderr] --> src/tileset_parser.rs:81:2 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn from_data(data: (String, Vec)) [INFO] [stderr] | _____^ [INFO] [stderr] 82 | | -> (String, Self) { [INFO] [stderr] 83 | | let name = data.0.clone(); [INFO] [stderr] 84 | | let position = utils::from_str_to_point2f(data.1[1].clone()); [INFO] [stderr] ... | [INFO] [stderr] 87 | | [INFO] [stderr] 88 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Position` [INFO] [stderr] --> src/tileset_parser.rs:120:1 [INFO] [stderr] | [INFO] [stderr] 120 | type Position = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Size` [INFO] [stderr] --> src/tileset_parser.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | type Size = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_file` [INFO] [stderr] --> src/tileset_parser.rs:123:4 [INFO] [stderr] | [INFO] [stderr] 123 | fn parse_file(path: &Path) -> Result<(HashMap>, i32), io::Error> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/gui.rs:112:3 [INFO] [stderr] | [INFO] [stderr] 112 | self.portrait.as_ref().expect("no portrait set").draw(ctx); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/game.rs:33:3 [INFO] [stderr] | [INFO] [stderr] 33 | self.stat_card.as_ref().expect("status card not initialized").draw(ctx, Default::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 41 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3m 22s [INFO] running `"docker" "inspect" "11244daea91028c756be7c558ea12c1b8e9d9f4be9cb8d611087e1d289a1bec2"` [INFO] running `"docker" "rm" "-f" "11244daea91028c756be7c558ea12c1b8e9d9f4be9cb8d611087e1d289a1bec2"` [INFO] [stdout] 11244daea91028c756be7c558ea12c1b8e9d9f4be9cb8d611087e1d289a1bec2 [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+1.44.0" "test" "--frozen" "--no-run"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] a0bb92360359bfc8a1b9be4672a31f67cf21c12e6e20b586a19a757d10c7d914 [INFO] running `"docker" "start" "-a" "a0bb92360359bfc8a1b9be4672a31f67cf21c12e6e20b586a19a757d10c7d914"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] Compiling game v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused import: `Image` [INFO] [stderr] --> src/utils.rs:4:28 [INFO] [stderr] | [INFO] [stderr] 4 | use ggez::graphics::{Rect, Image, Drawable}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Image`, `self` [INFO] [stderr] --> src/sprite.rs:5:22 [INFO] [stderr] | [INFO] [stderr] 5 | use ggez::graphics::{self, Drawable, DrawParam, Image}; [INFO] [stderr] | ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TextFragment` [INFO] [stderr] --> src/gui.rs:6:8 [INFO] [stderr] | [INFO] [stderr] 6 | Text, TextFragment}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::mint::Point2` [INFO] [stderr] --> src/gui.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | use ggez::mint::Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::filesystem` [INFO] [stderr] --> src/gui.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | use ggez::filesystem; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Context`, `GameResult` [INFO] [stderr] --> src/gui.rs:142:12 [INFO] [stderr] | [INFO] [stderr] 142 | use ggez::{Context, ContextBuilder, GameResult}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EventHandler` [INFO] [stderr] --> src/gui.rs:143:25 [INFO] [stderr] | [INFO] [stderr] 143 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/gui.rs:144:28 [INFO] [stderr] | [INFO] [stderr] 144 | use ggez::graphics::{self, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::filesystem` [INFO] [stderr] --> src/tileset_parser.rs:164:6 [INFO] [stderr] | [INFO] [stderr] 164 | use ggez::filesystem; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/tileset_parser.rs:168:6 [INFO] [stderr] | [INFO] [stderr] 168 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/tileset_parser.rs:169:6 [INFO] [stderr] | [INFO] [stderr] 169 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/tileset_parser.rs:170:6 [INFO] [stderr] | [INFO] [stderr] 170 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ContextBuilder` [INFO] [stderr] --> src/game.rs:1:21 [INFO] [stderr] | [INFO] [stderr] 1 | use ggez::{Context, ContextBuilder, GameResult}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/game.rs:2:19 [INFO] [stderr] | [INFO] [stderr] 2 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Status` [INFO] [stderr] --> src/game.rs:5:18 [INFO] [stderr] | [INFO] [stderr] 5 | use super::gui::{Status, StatusCard}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Context`, `GameResult` [INFO] [stderr] --> src/main.rs:8:12 [INFO] [stderr] | [INFO] [stderr] 8 | use ggez::{Context, GameResult, ContextBuilder}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EventHandler` [INFO] [stderr] --> src/main.rs:9:25 [INFO] [stderr] | [INFO] [stderr] 9 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/main.rs:10:28 [INFO] [stderr] | [INFO] [stderr] 10 | use ggez::graphics::{self, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::filesystem` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use ggez::filesystem; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/utils.rs:4:35 [INFO] [stderr] | [INFO] [stderr] 4 | use ggez::graphics::{Rect, Image, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/gui.rs:117:23 [INFO] [stderr] | [INFO] [stderr] 117 | fn dimensions(&self, ctx: &mut Context) -> Option { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mode` [INFO] [stderr] --> src/gui.rs:121:31 [INFO] [stderr] | [INFO] [stderr] 121 | fn set_blend_mode(&mut self, mode: Option) { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `status` [INFO] [stderr] --> src/gui.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | let status = game.stat_card.as_ref().unwrap().get_status().unwrap(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/game.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new(ctx: &mut Context) -> Self { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/game.rs:26:23 [INFO] [stderr] | [INFO] [stderr] 26 | fn update(&mut self, ctx: &mut Context) -> GameResult<()> { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | let mut sprite_data = SpriteData::new(image.clone()); [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:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let mut sprite = Sprite::from_data(sprite_data); [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/utils.rs:15:6 [INFO] [stderr] | [INFO] [stderr] 15 | let mut result: Vec = pos.split(' ').map(|x| x.to_string()).collect(); [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/utils.rs:16:6 [INFO] [stderr] | [INFO] [stderr] 16 | let mut result: Point2 = Point2::::from_slice( [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/gui.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | let mut sprite_data = SpriteData::new(image.clone()); [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/gui.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | let mut sprite = Sprite::from_data(sprite_data); [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/gui.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | let mut sp_2 = Sprite::from_data(SpriteData::new(image.clone())); [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/tileset_parser.rs:124:6 [INFO] [stderr] | [INFO] [stderr] 124 | let mut f = File::open(path)?; [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/tileset_parser.rs:181:6 [INFO] [stderr] | [INFO] [stderr] 181 | let mut result: Vec<(String, Vec)> = parse_result.drain().collect::)>>(); //converts a hashmap to a vector of pairs (my mind) [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `clean_empty` [INFO] [stderr] --> src/utils.rs:24:8 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn clean_empty(source: &mut Vec<(String, Vec)>) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `from_drawable` [INFO] [stderr] --> src/sprite.rs:50:2 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn from_drawable(drawable: Rc>) [INFO] [stderr] | _____^ [INFO] [stderr] 51 | | -> Self { [INFO] [stderr] 52 | | Self { [INFO] [stderr] 53 | | data: SpriteData::new(drawable), [INFO] [stderr] 54 | | param: Default::default(), [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `draw_param_mut` [INFO] [stderr] --> src/sprite.rs:58:2 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn draw_param_mut(&mut self) -> &mut DrawParam { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `pos_mut` [INFO] [stderr] --> src/sprite.rs:75:2 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn pos_mut(&mut self) -> &mut Point2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `hp` [INFO] [stderr] --> src/gui.rs:29:2 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn hp(&self) -> Rc> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_from_info` [INFO] [stderr] --> src/tileset_parser.rs:33:2 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn add_from_info(&mut self, info: HashMap) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Position` [INFO] [stderr] --> src/tileset_parser.rs:120:1 [INFO] [stderr] | [INFO] [stderr] 120 | type Position = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Size` [INFO] [stderr] --> src/tileset_parser.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | type Size = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/gui.rs:112:3 [INFO] [stderr] | [INFO] [stderr] 112 | self.portrait.as_ref().expect("no portrait set").draw(ctx); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/game.rs:33:3 [INFO] [stderr] | [INFO] [stderr] 33 | self.stat_card.as_ref().expect("status card not initialized").draw(ctx, Default::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 44 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 9.03s [INFO] running `"docker" "inspect" "a0bb92360359bfc8a1b9be4672a31f67cf21c12e6e20b586a19a757d10c7d914"` [INFO] running `"docker" "rm" "-f" "a0bb92360359bfc8a1b9be4672a31f67cf21c12e6e20b586a19a757d10c7d914"` [INFO] [stdout] a0bb92360359bfc8a1b9be4672a31f67cf21c12e6e20b586a19a757d10c7d914 [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+1.44.0" "test" "--frozen"` [INFO] [stdout] 026a39af0ef51a61b0ec00c834ab5b4029be1377c93918ff146eff2cbad2c106 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `"docker" "start" "-a" "026a39af0ef51a61b0ec00c834ab5b4029be1377c93918ff146eff2cbad2c106"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] warning: unused import: `Image` [INFO] [stderr] --> src/utils.rs:4:28 [INFO] [stderr] | [INFO] [stderr] 4 | use ggez::graphics::{Rect, Image, Drawable}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Image`, `self` [INFO] [stderr] --> src/sprite.rs:5:22 [INFO] [stderr] | [INFO] [stderr] 5 | use ggez::graphics::{self, Drawable, DrawParam, Image}; [INFO] [stderr] | ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TextFragment` [INFO] [stderr] --> src/gui.rs:6:8 [INFO] [stderr] | [INFO] [stderr] 6 | Text, TextFragment}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::mint::Point2` [INFO] [stderr] --> src/gui.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | use ggez::mint::Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::filesystem` [INFO] [stderr] --> src/gui.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | use ggez::filesystem; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Context`, `GameResult` [INFO] [stderr] --> src/gui.rs:142:12 [INFO] [stderr] | [INFO] [stderr] 142 | use ggez::{Context, ContextBuilder, GameResult}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EventHandler` [INFO] [stderr] --> src/gui.rs:143:25 [INFO] [stderr] | [INFO] [stderr] 143 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/gui.rs:144:28 [INFO] [stderr] | [INFO] [stderr] 144 | use ggez::graphics::{self, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::filesystem` [INFO] [stderr] --> src/tileset_parser.rs:164:6 [INFO] [stderr] | [INFO] [stderr] 164 | use ggez::filesystem; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/tileset_parser.rs:168:6 [INFO] [stderr] | [INFO] [stderr] 168 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/tileset_parser.rs:169:6 [INFO] [stderr] | [INFO] [stderr] 169 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/tileset_parser.rs:170:6 [INFO] [stderr] | [INFO] [stderr] 170 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ContextBuilder` [INFO] [stderr] --> src/game.rs:1:21 [INFO] [stderr] | [INFO] [stderr] 1 | use ggez::{Context, ContextBuilder, GameResult}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/game.rs:2:19 [INFO] [stderr] | [INFO] [stderr] 2 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Status` [INFO] [stderr] --> src/game.rs:5:18 [INFO] [stderr] | [INFO] [stderr] 5 | use super::gui::{Status, StatusCard}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Context`, `GameResult` [INFO] [stderr] --> src/main.rs:8:12 [INFO] [stderr] | [INFO] [stderr] 8 | use ggez::{Context, GameResult, ContextBuilder}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EventHandler` [INFO] [stderr] --> src/main.rs:9:25 [INFO] [stderr] | [INFO] [stderr] 9 | use ggez::event::{self, EventHandler}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/main.rs:10:28 [INFO] [stderr] | [INFO] [stderr] 10 | use ggez::graphics::{self, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ggez::filesystem` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use ggez::filesystem; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Drawable` [INFO] [stderr] --> src/utils.rs:4:35 [INFO] [stderr] | [INFO] [stderr] 4 | use ggez::graphics::{Rect, Image, Drawable}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/gui.rs:117:23 [INFO] [stderr] | [INFO] [stderr] 117 | fn dimensions(&self, ctx: &mut Context) -> Option { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mode` [INFO] [stderr] --> src/gui.rs:121:31 [INFO] [stderr] | [INFO] [stderr] 121 | fn set_blend_mode(&mut self, mode: Option) { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `status` [INFO] [stderr] --> src/gui.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | let status = game.stat_card.as_ref().unwrap().get_status().unwrap(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/game.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new(ctx: &mut Context) -> Self { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ctx` [INFO] [stderr] --> src/game.rs:26:23 [INFO] [stderr] | [INFO] [stderr] 26 | fn update(&mut self, ctx: &mut Context) -> GameResult<()> { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | let mut sprite_data = SpriteData::new(image.clone()); [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:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let mut sprite = Sprite::from_data(sprite_data); [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/utils.rs:15:6 [INFO] [stderr] | [INFO] [stderr] 15 | let mut result: Vec = pos.split(' ').map(|x| x.to_string()).collect(); [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/utils.rs:16:6 [INFO] [stderr] | [INFO] [stderr] 16 | let mut result: Point2 = Point2::::from_slice( [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/gui.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | let mut sprite_data = SpriteData::new(image.clone()); [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/gui.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | let mut sprite = Sprite::from_data(sprite_data); [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/gui.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | let mut sp_2 = Sprite::from_data(SpriteData::new(image.clone())); [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/tileset_parser.rs:124:6 [INFO] [stderr] | [INFO] [stderr] 124 | let mut f = File::open(path)?; [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/tileset_parser.rs:181:6 [INFO] [stderr] | [INFO] [stderr] 181 | let mut result: Vec<(String, Vec)> = parse_result.drain().collect::)>>(); //converts a hashmap to a vector of pairs (my mind) [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `clean_empty` [INFO] [stderr] --> src/utils.rs:24:8 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn clean_empty(source: &mut Vec<(String, Vec)>) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `from_drawable` [INFO] [stderr] --> src/sprite.rs:50:2 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn from_drawable(drawable: Rc>) [INFO] [stderr] | _____^ [INFO] [stderr] 51 | | -> Self { [INFO] [stderr] 52 | | Self { [INFO] [stderr] 53 | | data: SpriteData::new(drawable), [INFO] [stderr] 54 | | param: Default::default(), [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `draw_param_mut` [INFO] [stderr] --> src/sprite.rs:58:2 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn draw_param_mut(&mut self) -> &mut DrawParam { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `pos_mut` [INFO] [stderr] --> src/sprite.rs:75:2 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn pos_mut(&mut self) -> &mut Point2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `hp` [INFO] [stderr] --> src/gui.rs:29:2 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn hp(&self) -> Rc> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_from_info` [INFO] [stderr] --> src/tileset_parser.rs:33:2 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn add_from_info(&mut self, info: HashMap) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Position` [INFO] [stderr] --> src/tileset_parser.rs:120:1 [INFO] [stderr] | [INFO] [stderr] 120 | type Position = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Size` [INFO] [stderr] --> src/tileset_parser.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | type Size = Point2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/gui.rs:112:3 [INFO] [stderr] | [INFO] [stderr] 112 | self.portrait.as_ref().expect("no portrait set").draw(ctx); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/game.rs:33:3 [INFO] [stderr] | [INFO] [stderr] 33 | self.stat_card.as_ref().expect("status card not initialized").draw(ctx, Default::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 44 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.29s [INFO] [stderr] Running /opt/rustwide/target/debug/deps/game-631e2864c0248274 [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test tileset_parser::test::test_file_io ... ok [INFO] [stdout] test gui::tests::test_status ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- gui::tests::test_status stdout ---- [INFO] [stdout] thread 'gui::tests::test_status' panicked at 'Failed to initialize any backend! Wayland status: XdgRuntimeDirNotSet X11 status: XOpenDisplayFailed', /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/winit-0.19.5/src/platform/linux/mod.rs:467:9 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x55ef04bc7374 - backtrace::backtrace::libunwind::trace::hc1c4a1d8ad423b97 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86 [INFO] [stdout] 1: 0x55ef04bc7374 - backtrace::backtrace::trace_unsynchronized::h82274781060cb056 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66 [INFO] [stdout] 2: 0x55ef04bc7374 - std::sys_common::backtrace::_print_fmt::h2a45d89b653a4da8 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:78 [INFO] [stdout] 3: 0x55ef04bc7374 - ::fmt::h41a0a93ab85e6aa1 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stdout] 4: 0x55ef04bf521c - core::fmt::write::hdaea18585065a96d [INFO] [stdout] at src/libcore/fmt/mod.rs:1069 [INFO] [stdout] 5: 0x55ef042211b5 - std::io::Write::write_fmt::h42f0550b6bd39c6e [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/io/mod.rs:1504 [INFO] [stdout] 6: 0x55ef04bc0c31 - std::io::impls::>::write_fmt::h223d7b7033cad46d [INFO] [stdout] at src/libstd/io/impls.rs:156 [INFO] [stdout] 7: 0x55ef04bca1b5 - std::sys_common::backtrace::_print::hd95f9978cc145ca4 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:62 [INFO] [stdout] 8: 0x55ef04bca1b5 - std::sys_common::backtrace::print::hfb25ca2291be47d0 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:49 [INFO] [stdout] 9: 0x55ef04bca1b5 - std::panicking::default_hook::{{closure}}::h44f76cee5dc8591c [INFO] [stdout] at src/libstd/panicking.rs:198 [INFO] [stdout] 10: 0x55ef04bc9e9b - std::panicking::default_hook::h198e1a712910f1e6 [INFO] [stdout] at src/libstd/panicking.rs:215 [INFO] [stdout] 11: 0x55ef04bca812 - std::panicking::rust_panic_with_hook::hc0b4730bb8013f9d [INFO] [stdout] at src/libstd/panicking.rs:511 [INFO] [stdout] 12: 0x55ef04855bfc - std::panicking::begin_panic::h3a32ed6a1c6e5bbe [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panicking.rs:438 [INFO] [stdout] 13: 0x55ef0480584d - winit::platform::platform::EventsLoop::new::hc6bade26eb53e184 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/winit-0.19.5/src/platform/linux/mod.rs:467 [INFO] [stdout] 14: 0x55ef048645b1 - winit::EventsLoop::new::hcfd8e7274d308e69 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/winit-0.19.5/src/lib.rs:251 [INFO] [stdout] 15: 0x55ef04290014 - ggez::context::Context::from_conf::h33f62cf3b5b92d08 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/ggez-0.5.1/src/context.rs:85 [INFO] [stdout] 16: 0x55ef04291a4c - ggez::context::ContextBuilder::build::hdf5544f86122f102 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/ggez-0.5.1/src/context.rs:304 [INFO] [stdout] 17: 0x55ef0420b8fe - game::gui::tests::test_status::hd78b3dd60d3c0bc7 [INFO] [stdout] at src/gui.rs:148 [INFO] [stdout] 18: 0x55ef0420b87a - game::gui::tests::test_status::{{closure}}::h9a2244ec85925ed4 [INFO] [stdout] at src/gui.rs:147 [INFO] [stdout] 19: 0x55ef042096be - core::ops::function::FnOnce::call_once::h0543ca87b5de1849 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libcore/ops/function.rs:232 [INFO] [stdout] 20: 0x55ef04248646 - as core::ops::function::FnOnce>::call_once::hc165f65f4331a55c [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/liballoc/boxed.rs:1008 [INFO] [stdout] 21: 0x55ef04248646 - as core::ops::function::FnOnce<()>>::call_once::hb89f1f769cad07ce [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panic.rs:318 [INFO] [stdout] 22: 0x55ef04248646 - std::panicking::try::do_call::h104f7f3dae5a1b29 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panicking.rs:331 [INFO] [stdout] 23: 0x55ef04248646 - std::panicking::try::h0e20f01361cba753 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panicking.rs:274 [INFO] [stdout] 24: 0x55ef04248646 - std::panic::catch_unwind::h0bd0c84b5f4cd121 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panic.rs:394 [INFO] [stdout] 25: 0x55ef04248646 - test::run_test_in_process::hf34c22adfeb6853d [INFO] [stdout] at src/libtest/lib.rs:541 [INFO] [stdout] 26: 0x55ef04248646 - test::run_test::run_test_inner::{{closure}}::h40d568b4c10a12f1 [INFO] [stdout] at src/libtest/lib.rs:450 [INFO] [stdout] 27: 0x55ef04220666 - std::sys_common::backtrace::__rust_begin_short_backtrace::hffd9774ad3f2d778 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/sys_common/backtrace.rs:130 [INFO] [stdout] 28: 0x55ef042259f5 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::h4594020476cf52d4 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/thread/mod.rs:475 [INFO] [stdout] 29: 0x55ef042259f5 - as core::ops::function::FnOnce<()>>::call_once::h9d0a6d45b73e29e4 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panic.rs:318 [INFO] [stdout] 30: 0x55ef042259f5 - std::panicking::try::do_call::h902fd77b30bb3bb7 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panicking.rs:331 [INFO] [stdout] 31: 0x55ef042259f5 - std::panicking::try::hc17d3a628e65d49d [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panicking.rs:274 [INFO] [stdout] 32: 0x55ef042259f5 - std::panic::catch_unwind::h9c9d49cbb6b18017 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/panic.rs:394 [INFO] [stdout] 33: 0x55ef042259f5 - std::thread::Builder::spawn_unchecked::{{closure}}::h6a6f5a333fd631a2 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libstd/thread/mod.rs:474 [INFO] [stdout] 34: 0x55ef042259f5 - core::ops::function::FnOnce::call_once{{vtable.shim}}::ha6fb197e0ce57f73 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/libcore/ops/function.rs:232 [INFO] [stdout] 35: 0x55ef04bd2cea - as core::ops::function::FnOnce>::call_once::h1f1fac7de7dd9691 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/liballoc/boxed.rs:1008 [INFO] [stdout] 36: 0x55ef04bd2cea - as core::ops::function::FnOnce>::call_once::ha031f48633a6af54 [INFO] [stdout] at /rustc/49cae55760da0a43428eba73abcb659bb70cf2e4/src/liballoc/boxed.rs:1008 [INFO] [stdout] 37: 0x55ef04bd2cea - std::sys::unix::thread::Thread::new::thread_start::h241864caf436e182 [INFO] [stdout] at src/libstd/sys/unix/thread.rs:87 [INFO] [stdout] 38: 0x7f311f0aa609 - start_thread [INFO] [stdout] 39: 0x7f311efb4103 - __clone [INFO] [stdout] 40: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] gui::tests::test_status [INFO] [stdout] [INFO] [stdout] test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass '--bin game' [INFO] running `"docker" "inspect" "026a39af0ef51a61b0ec00c834ab5b4029be1377c93918ff146eff2cbad2c106"` [INFO] running `"docker" "rm" "-f" "026a39af0ef51a61b0ec00c834ab5b4029be1377c93918ff146eff2cbad2c106"` [INFO] [stdout] 026a39af0ef51a61b0ec00c834ab5b4029be1377c93918ff146eff2cbad2c106