[INFO] cloning repository https://github.com/SystematicLoop/cherry
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/SystematicLoop/cherry" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSystematicLoop%2Fcherry", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSystematicLoop%2Fcherry'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6afc7f93bd3c5c45191c1d68d2206a83a83dd8fc
[INFO] checking SystematicLoop/cherry against beta-2020-07-24 for pr-75494-beta
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSystematicLoop%2Fcherry" "/workspace/builds/worker-8/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-8/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/SystematicLoop/cherry on toolchain beta-2020-07-24
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2020-07-24" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/SystematicLoop/cherry
[INFO] finished tweaking git repo https://github.com/SystematicLoop/cherry
[INFO] tweaked toml for git repo https://github.com/SystematicLoop/cherry written to /workspace/builds/worker-8/source/Cargo.toml
[INFO] crate git repo https://github.com/SystematicLoop/cherry already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2020-07-24" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/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" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:a636fd89d022f18117e1dc8fb37a0a009933cdbbe082814857f0e2024962d47c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-07-24" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2dd85d4dc66f91249f5d8933aa496f3bf738d873bf389007be2dd6c39281cac7
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "2dd85d4dc66f91249f5d8933aa496f3bf738d873bf389007be2dd6c39281cac7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2dd85d4dc66f91249f5d8933aa496f3bf738d873bf389007be2dd6c39281cac7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2dd85d4dc66f91249f5d8933aa496f3bf738d873bf389007be2dd6c39281cac7", kill_on_drop: false }`
[INFO] [stdout] 2dd85d4dc66f91249f5d8933aa496f3bf738d873bf389007be2dd6c39281cac7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/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" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:a636fd89d022f18117e1dc8fb37a0a009933cdbbe082814857f0e2024962d47c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-07-24" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9acfee91a9913a92636ab190b81aba59c64366f635b412e262dbf2d1b9ebe56a
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "9acfee91a9913a92636ab190b81aba59c64366f635b412e262dbf2d1b9ebe56a", kill_on_drop: false }`
[INFO] [stderr]     Checking cherry v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: type `SDL_Button` should have an upper camel case name
[INFO] [stdout]  --> src/sdl/mouse.rs:1:10
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub type SDL_Button = u8;
[INFO] [stdout]   |          ^^^^^^^^^^ help: convert the identifier to upper camel case: `SdlButton`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SDL_Scancode` should have an upper camel case name
[INFO] [stdout]  --> src/sdl/scancode.rs:1:10
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub type SDL_Scancode = u32;
[INFO] [stdout]   |          ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SdlScancode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SDL_Button` should have an upper camel case name
[INFO] [stdout]  --> src/sdl/mouse.rs:1:10
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub type SDL_Button = u8;
[INFO] [stdout]   |          ^^^^^^^^^^ help: convert the identifier to upper camel case: `SdlButton`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SDL_Scancode` should have an upper camel case name
[INFO] [stdout]  --> src/sdl/scancode.rs:1:10
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub type SDL_Scancode = u32;
[INFO] [stdout]   |          ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SdlScancode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initialiser`
[INFO] [stdout]  --> src/main.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let initialiser = Initialiser::init()
[INFO] [stdout]   |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initialiser`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]   --> src/main.rs:30:38
[INFO] [stdout]    |
[INFO] [stdout] 30 |                 Event::MouseButtonUp(event) => {
[INFO] [stdout]    |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]   --> src/main.rs:34:40
[INFO] [stdout]    |
[INFO] [stdout] 34 |                 Event::MouseButtonDown(event) => {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]   --> src/main.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 Event::KeyUp(event) => {
[INFO] [stdout]    |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/cherry/colour.rs:38:40
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn from_hsv(h: Degree, s: f32, v: f32) -> Self {
[INFO] [stdout]    |                                        ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reader`
[INFO] [stdout]   --> src/cherry/sprite.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 |         let reader = BufReader::new(file);
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_reader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initialiser`
[INFO] [stdout]  --> src/main.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let initialiser = Initialiser::init()
[INFO] [stdout]   |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initialiser`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]   --> src/main.rs:30:38
[INFO] [stdout]    |
[INFO] [stdout] 30 |                 Event::MouseButtonUp(event) => {
[INFO] [stdout]    |                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]   --> src/main.rs:34:40
[INFO] [stdout]    |
[INFO] [stdout] 34 |                 Event::MouseButtonDown(event) => {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]   --> src/main.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 Event::KeyUp(event) => {
[INFO] [stdout]    |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/cherry/colour.rs:38:40
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn from_hsv(h: Degree, s: f32, v: f32) -> Self {
[INFO] [stdout]    |                                        ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reader`
[INFO] [stdout]   --> src/cherry/sprite.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 |         let reader = BufReader::new(file);
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_reader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_MOUSEWHEEL`
[INFO] [stdout]  --> src/sdl/events.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const SDL_MOUSEWHEEL:      u32 = 0x403;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_NO_FLAGS`
[INFO] [stdout]  --> src/sdl/renderer.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const SDL_RENDERER_NO_FLAGS:      u32 = 0x00000000;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_SOFTWARE`
[INFO] [stdout]  --> src/sdl/renderer.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SDL_RENDERER_SOFTWARE:      u32 = 0x00000001;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_ACCELERATED`
[INFO] [stdout]  --> src/sdl/renderer.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const SDL_RENDERER_ACCELERATED:   u32 = 0x00000002;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_PRESENTVSYNC`
[INFO] [stdout]  --> src/sdl/renderer.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const SDL_RENDERER_PRESENTVSYNC:  u32 = 0x00000004;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_TARGETTEXTURE`
[INFO] [stdout]  --> src/sdl/renderer.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const SDL_RENDERER_TARGETTEXTURE: u32 = 0x00000008;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderClear`
[INFO] [stdout]   --> src/sdl/renderer.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_RenderClear(renderer: *mut SDL_Renderer) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_SetRenderDrawColor`
[INFO] [stdout]   --> src/sdl/renderer.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn SDL_SetRenderDrawColor(renderer: *mut SDL_Renderer, r: u8, g: u8, b: u8, a: u8) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderDrawPoint`
[INFO] [stdout]   --> src/sdl/renderer.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn SDL_RenderDrawPoint(renderer: *mut SDL_Renderer, x: i32, y: i32) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderDrawLine`
[INFO] [stdout]   --> src/sdl/renderer.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn SDL_RenderDrawLine(renderer: *mut SDL_Renderer, x1: i32, y1: i32, x2: i32, y2: i32) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderDrawRect`
[INFO] [stdout]   --> src/sdl/renderer.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn SDL_RenderDrawRect(renderer: *mut SDL_Renderer, rect: SDL_Rect) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_TEXTUREACCESS_STATIC`
[INFO] [stdout]  --> src/sdl/texture.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SDL_TEXTUREACCESS_STATIC:    i32 = 0;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_TEXTUREACCESS_TARGET`
[INFO] [stdout]  --> src/sdl/texture.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const SDL_TEXTUREACCESS_TARGET:    i32 = 2;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_PIXELFORMAT_RGB888`
[INFO] [stdout]   --> src/sdl/texture.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const SDL_PIXELFORMAT_RGB888: u32 = 370546692;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_WasInit`
[INFO] [stdout]  --> src/sdl/system.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn SDL_WasInit(flags: u32) -> u32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]  --> src/cherry/colour.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub fn new(value: f32) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `value`
[INFO] [stdout]   --> src/cherry/colour.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn value(self) -> f32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `between`
[INFO] [stdout]   --> src/cherry/colour.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn between(self, min: f32, max: f32) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `from_hsv`
[INFO] [stdout]   --> src/cherry/colour.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn from_hsv(h: Degree, s: f32, v: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `count`
[INFO] [stdout]   --> src/cherry/keycode.rs:19:14
[INFO] [stdout]    |
[INFO] [stdout] 19 |     const fn count() -> usize {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `area`
[INFO] [stdout]   --> src/cherry/math/rect.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn area(self) -> i32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `intersect`
[INFO] [stdout]   --> src/cherry/math/rect.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn intersect(self, other: Self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `magnitude`
[INFO] [stdout]   --> src/cherry/math/vector.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn magnitude(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `normalise`
[INFO] [stdout]   --> src/cherry/math/vector.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn normalise(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `direction_to`
[INFO] [stdout]   --> src/cherry/math/vector.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn direction_to(self, other: Self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `distance_to`
[INFO] [stdout]   --> src/cherry/math/vector.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn distance_to(self, other: Self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `angle_rad`
[INFO] [stdout]   --> src/cherry/math/vector.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub fn angle_rad(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `angle_deg`
[INFO] [stdout]   --> src/cherry/math/vector.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn angle_deg(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `count`
[INFO] [stdout]   --> src/cherry/mouse.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn count() -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `virtual_size`
[INFO] [stdout]   --> src/cherry/renderer.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn virtual_size(&self) -> Dimension {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `virtual_width`
[INFO] [stdout]   --> src/cherry/renderer.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub fn virtual_width(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `virtual_height`
[INFO] [stdout]   --> src/cherry/renderer.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn virtual_height(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `draw_rect`
[INFO] [stdout]    --> src/cherry/renderer.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub fn draw_rect(&mut self, mut rect: Rect, colour: Colour) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `Sprite`
[INFO] [stdout]  --> src/cherry/sprite.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct Sprite {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `load`
[INFO] [stdout]   --> src/cherry/sprite.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn load<P: AsRef<Path>>(path: P) -> Result<Self, ()> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `height`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn height(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `size`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn size(&self) -> Dimension {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `resize`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn resize(&mut self, size: Dimension) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `to_index_unchecked`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:50:19
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub unsafe fn to_index_unchecked(&self, x: i32, y: i32) -> usize {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `set_unchecked`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:65:19
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub unsafe fn set_unchecked(&mut self, x: i32, y: i32, colour: Colour) {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `title`
[INFO] [stdout]  --> src/cherry/window.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     title:  String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `size`
[INFO] [stdout]  --> src/cherry/window.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     size:   Dimension,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `title`
[INFO] [stdout]   --> src/cherry/window.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn title(&self) -> &String {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `size`
[INFO] [stdout]   --> src/cherry/window.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn size(&self) -> Dimension {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::window::SDL_Window`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:16:39
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn SDL_CreateRenderer(window: *mut SDL_Window, index: i32, flags: u32) -> *mut SDL_Renderer;
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(improper_ctypes)]` on by default
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/window.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct SDL_Window;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:16:83
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn SDL_CreateRenderer(window: *mut SDL_Window, index: i32, flags: u32) -> *mut SDL_Renderer;
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:17:42
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn SDL_DestroyRenderer(renderer: *mut SDL_Renderer);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:18:38
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_RenderClear(renderer: *mut SDL_Renderer) -> i32;
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:19:37
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn SDL_RenderCopy(renderer: *mut SDL_Renderer, texture: *mut SDL_Texture, src_rect: *const SDL_Rect, dst_rect: *const SDL_Rect) -...
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:19:65
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn SDL_RenderCopy(renderer: *mut SDL_Renderer, texture: *mut SDL_Texture, src_rect: *const SDL_Rect, dst_rect: *const SDL_Rect) -...
[INFO] [stdout]    |                                                                 ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:20:40
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn SDL_RenderPresent(renderer: *mut SDL_Renderer);
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:21:45
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn SDL_SetRenderDrawColor(renderer: *mut SDL_Renderer, r: u8, g: u8, b: u8, a: u8) -> i32;
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:22:42
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn SDL_RenderDrawPoint(renderer: *mut SDL_Renderer, x: i32, y: i32) -> i32;
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:23:41
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn SDL_RenderDrawLine(renderer: *mut SDL_Renderer, x1: i32, y1: i32, x2: i32, y2: i32) -> i32;
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:24:41
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn SDL_RenderDrawRect(renderer: *mut SDL_Renderer, rect: SDL_Rect) -> i32;
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:25:47
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn SDL_RenderSetLogicalSize(renderer: *mut SDL_Renderer, w: i32, h: i32) -> i32;
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:18:40
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_CreateTexture(renderer: *mut SDL_Renderer, format: u32, access: i32, w: i32, h: i32) -> *mut SDL_Texture;
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:18:104
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_CreateTexture(renderer: *mut SDL_Renderer, format: u32, access: i32, w: i32, h: i32) -> *mut SDL_Texture;
[INFO] [stdout]    |                                                                                                        ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn SDL_DestroyTexture(texture: *mut SDL_Texture);
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:20:39
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn SDL_UpdateTexture(texture: *mut SDL_Texture, rect: *const SDL_Rect, pixels: *const c_void, pitch: i32);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::window::SDL_Window`, which is not FFI-safe
[INFO] [stdout]  --> src/sdl/window.rs:8:94
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub fn SDL_CreateWindow(title: *const u8, x: i32, y: i32, w: i32, h: i32, flags: u32) -> *mut SDL_Window;
[INFO] [stdout]   |                                                                                              ^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider adding a member to this struct
[INFO] [stdout]   = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]  --> src/sdl/window.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SDL_Window;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::window::SDL_Window`, which is not FFI-safe
[INFO] [stdout]  --> src/sdl/window.rs:9:38
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn SDL_DestroyWindow(window: *mut SDL_Window);
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider adding a member to this struct
[INFO] [stdout]   = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]  --> src/sdl/window.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SDL_Window;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 70 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_MOUSEWHEEL`
[INFO] [stdout]  --> src/sdl/events.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const SDL_MOUSEWHEEL:      u32 = 0x403;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_NO_FLAGS`
[INFO] [stdout]  --> src/sdl/renderer.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const SDL_RENDERER_NO_FLAGS:      u32 = 0x00000000;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_SOFTWARE`
[INFO] [stdout]  --> src/sdl/renderer.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SDL_RENDERER_SOFTWARE:      u32 = 0x00000001;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_ACCELERATED`
[INFO] [stdout]  --> src/sdl/renderer.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const SDL_RENDERER_ACCELERATED:   u32 = 0x00000002;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_PRESENTVSYNC`
[INFO] [stdout]  --> src/sdl/renderer.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const SDL_RENDERER_PRESENTVSYNC:  u32 = 0x00000004;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_RENDERER_TARGETTEXTURE`
[INFO] [stdout]  --> src/sdl/renderer.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const SDL_RENDERER_TARGETTEXTURE: u32 = 0x00000008;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderClear`
[INFO] [stdout]   --> src/sdl/renderer.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_RenderClear(renderer: *mut SDL_Renderer) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_SetRenderDrawColor`
[INFO] [stdout]   --> src/sdl/renderer.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn SDL_SetRenderDrawColor(renderer: *mut SDL_Renderer, r: u8, g: u8, b: u8, a: u8) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderDrawPoint`
[INFO] [stdout]   --> src/sdl/renderer.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn SDL_RenderDrawPoint(renderer: *mut SDL_Renderer, x: i32, y: i32) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderDrawLine`
[INFO] [stdout]   --> src/sdl/renderer.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn SDL_RenderDrawLine(renderer: *mut SDL_Renderer, x1: i32, y1: i32, x2: i32, y2: i32) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_RenderDrawRect`
[INFO] [stdout]   --> src/sdl/renderer.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn SDL_RenderDrawRect(renderer: *mut SDL_Renderer, rect: SDL_Rect) -> i32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_TEXTUREACCESS_STATIC`
[INFO] [stdout]  --> src/sdl/texture.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SDL_TEXTUREACCESS_STATIC:    i32 = 0;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_TEXTUREACCESS_TARGET`
[INFO] [stdout]  --> src/sdl/texture.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const SDL_TEXTUREACCESS_TARGET:    i32 = 2;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant is never used: `SDL_PIXELFORMAT_RGB888`
[INFO] [stdout]   --> src/sdl/texture.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const SDL_PIXELFORMAT_RGB888: u32 = 370546692;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `SDL_WasInit`
[INFO] [stdout]  --> src/sdl/system.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn SDL_WasInit(flags: u32) -> u32;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]  --> src/cherry/colour.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub fn new(value: f32) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `value`
[INFO] [stdout]   --> src/cherry/colour.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn value(self) -> f32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `between`
[INFO] [stdout]   --> src/cherry/colour.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn between(self, min: f32, max: f32) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `from_hsv`
[INFO] [stdout]   --> src/cherry/colour.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn from_hsv(h: Degree, s: f32, v: f32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `count`
[INFO] [stdout]   --> src/cherry/keycode.rs:19:14
[INFO] [stdout]    |
[INFO] [stdout] 19 |     const fn count() -> usize {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `area`
[INFO] [stdout]   --> src/cherry/math/rect.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn area(self) -> i32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `intersect`
[INFO] [stdout]   --> src/cherry/math/rect.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn intersect(self, other: Self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `magnitude`
[INFO] [stdout]   --> src/cherry/math/vector.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn magnitude(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `normalise`
[INFO] [stdout]   --> src/cherry/math/vector.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn normalise(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `direction_to`
[INFO] [stdout]   --> src/cherry/math/vector.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn direction_to(self, other: Self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `distance_to`
[INFO] [stdout]   --> src/cherry/math/vector.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn distance_to(self, other: Self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `angle_rad`
[INFO] [stdout]   --> src/cherry/math/vector.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub fn angle_rad(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `angle_deg`
[INFO] [stdout]   --> src/cherry/math/vector.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn angle_deg(self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `count`
[INFO] [stdout]   --> src/cherry/mouse.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn count() -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `virtual_size`
[INFO] [stdout]   --> src/cherry/renderer.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn virtual_size(&self) -> Dimension {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `virtual_width`
[INFO] [stdout]   --> src/cherry/renderer.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub fn virtual_width(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `virtual_height`
[INFO] [stdout]   --> src/cherry/renderer.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn virtual_height(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `draw_rect`
[INFO] [stdout]    --> src/cherry/renderer.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub fn draw_rect(&mut self, mut rect: Rect, colour: Colour) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `Sprite`
[INFO] [stdout]  --> src/cherry/sprite.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct Sprite {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `load`
[INFO] [stdout]   --> src/cherry/sprite.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn load<P: AsRef<Path>>(path: P) -> Result<Self, ()> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `height`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn height(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `size`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn size(&self) -> Dimension {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `resize`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn resize(&mut self, size: Dimension) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `to_index_unchecked`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:50:19
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub unsafe fn to_index_unchecked(&self, x: i32, y: i32) -> usize {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `set_unchecked`
[INFO] [stdout]   --> src/cherry/window_buffer.rs:65:19
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub unsafe fn set_unchecked(&mut self, x: i32, y: i32, colour: Colour) {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `title`
[INFO] [stdout]  --> src/cherry/window.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     title:  String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `size`
[INFO] [stdout]  --> src/cherry/window.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     size:   Dimension,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `title`
[INFO] [stdout]   --> src/cherry/window.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn title(&self) -> &String {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `size`
[INFO] [stdout]   --> src/cherry/window.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn size(&self) -> Dimension {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::window::SDL_Window`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:16:39
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn SDL_CreateRenderer(window: *mut SDL_Window, index: i32, flags: u32) -> *mut SDL_Renderer;
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(improper_ctypes)]` on by default
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/window.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct SDL_Window;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:16:83
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn SDL_CreateRenderer(window: *mut SDL_Window, index: i32, flags: u32) -> *mut SDL_Renderer;
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:17:42
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn SDL_DestroyRenderer(renderer: *mut SDL_Renderer);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:18:38
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_RenderClear(renderer: *mut SDL_Renderer) -> i32;
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:19:37
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn SDL_RenderCopy(renderer: *mut SDL_Renderer, texture: *mut SDL_Texture, src_rect: *const SDL_Rect, dst_rect: *const SDL_Rect) -...
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:19:65
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn SDL_RenderCopy(renderer: *mut SDL_Renderer, texture: *mut SDL_Texture, src_rect: *const SDL_Rect, dst_rect: *const SDL_Rect) -...
[INFO] [stdout]    |                                                                 ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:20:40
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn SDL_RenderPresent(renderer: *mut SDL_Renderer);
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:21:45
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn SDL_SetRenderDrawColor(renderer: *mut SDL_Renderer, r: u8, g: u8, b: u8, a: u8) -> i32;
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:22:42
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn SDL_RenderDrawPoint(renderer: *mut SDL_Renderer, x: i32, y: i32) -> i32;
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:23:41
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn SDL_RenderDrawLine(renderer: *mut SDL_Renderer, x1: i32, y1: i32, x2: i32, y2: i32) -> i32;
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:24:41
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn SDL_RenderDrawRect(renderer: *mut SDL_Renderer, rect: SDL_Rect) -> i32;
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/renderer.rs:25:47
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn SDL_RenderSetLogicalSize(renderer: *mut SDL_Renderer, w: i32, h: i32) -> i32;
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::renderer::SDL_Renderer`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:18:40
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_CreateTexture(renderer: *mut SDL_Renderer, format: u32, access: i32, w: i32, h: i32) -> *mut SDL_Texture;
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/renderer.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SDL_Renderer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:18:104
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn SDL_CreateTexture(renderer: *mut SDL_Renderer, format: u32, access: i32, w: i32, h: i32) -> *mut SDL_Texture;
[INFO] [stdout]    |                                                                                                        ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn SDL_DestroyTexture(texture: *mut SDL_Texture);
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::texture::SDL_Texture`, which is not FFI-safe
[INFO] [stdout]   --> src/sdl/texture.rs:20:39
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn SDL_UpdateTexture(texture: *mut SDL_Texture, rect: *const SDL_Rect, pixels: *const c_void, pitch: i32);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a member to this struct
[INFO] [stdout]    = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> src/sdl/texture.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SDL_Texture;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::window::SDL_Window`, which is not FFI-safe
[INFO] [stdout]  --> src/sdl/window.rs:8:94
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub fn SDL_CreateWindow(title: *const u8, x: i32, y: i32, w: i32, h: i32, flags: u32) -> *mut SDL_Window;
[INFO] [stdout]   |                                                                                              ^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider adding a member to this struct
[INFO] [stdout]   = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]  --> src/sdl/window.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SDL_Window;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` block uses type `sdl::window::SDL_Window`, which is not FFI-safe
[INFO] [stdout]  --> src/sdl/window.rs:9:38
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn SDL_DestroyWindow(window: *mut SDL_Window);
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider adding a member to this struct
[INFO] [stdout]   = note: this struct has no fields
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]  --> src/sdl/window.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SDL_Window;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 70 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 0.71s
[INFO] running `Command { std: "docker" "inspect" "9acfee91a9913a92636ab190b81aba59c64366f635b412e262dbf2d1b9ebe56a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9acfee91a9913a92636ab190b81aba59c64366f635b412e262dbf2d1b9ebe56a", kill_on_drop: false }`
[INFO] [stdout] 9acfee91a9913a92636ab190b81aba59c64366f635b412e262dbf2d1b9ebe56a
