[INFO] updating cached repository https://github.com/mcoffin/vk-playground
[INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"`
[INFO] running `"git" "rev-parse" "HEAD"`
[INFO] [stdout] f4ce9888705f152a314cbc42fccb45954cd82f2a
[INFO] checking mcoffin/vk-playground against master#bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc for pr-70917
[INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmcoffin%2Fvk-playground" "/workspace/builds/worker-2/source"`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/mcoffin/vk-playground on toolchain bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking git repo https://github.com/mcoffin/vk-playground
[INFO] finished tweaking git repo https://github.com/mcoffin/vk-playground
[INFO] tweaked toml for git repo https://github.com/mcoffin/vk-playground written to /workspace/builds/worker-2/source/Cargo.toml
[INFO] crate git repo https://github.com/mcoffin/vk-playground already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/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=forbid" "-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" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stdout] fd8f876517766b9816da7527b24a24d1e62885d796f531a2a38efca981a89039
[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" "fd8f876517766b9816da7527b24a24d1e62885d796f531a2a38efca981a89039"`
[INFO] [stderr]     Checking vk-sys v0.2.7
[INFO] [stderr]     Checking shared_library v0.1.7
[INFO] [stderr]     Checking num-bigint v0.1.40
[INFO] [stderr]     Checking semver v0.2.3
[INFO] [stderr]     Checking env_logger v0.4.3
[INFO] [stderr]     Checking ash v0.18.4
[INFO] [stderr]     Checking num-rational v0.1.39
[INFO] [stderr]     Checking num v0.1.40
[INFO] [stderr]     Checking glfw v0.17.0
[INFO] [stderr]     Checking vk-playground v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]   --> src/main.rs:53:20
[INFO] [stderr]    |
[INFO] [stderr] 53 |     let mut file = try!(fs::File::open(filename));
[INFO] [stderr]    |                    ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]   --> src/main.rs:61:5
[INFO] [stderr]    |
[INFO] [stderr] 61 |     try!(file.read_to_end(&mut buf));
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]    --> src/main.rs:171:28
[INFO] [stderr]     |
[INFO] [stderr] 171 |         let capabilities = try!(vk_surface.get_physical_device_surface_capabilities_khr(device, *surface));
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]    --> src/main.rs:172:23
[INFO] [stderr]     |
[INFO] [stderr] 172 |         let formats = try!(vk_surface.get_physical_device_surface_formats_khr(device, *surface));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]    --> src/main.rs:173:29
[INFO] [stderr]     |
[INFO] [stderr] 173 |         let present_modes = try!(vk_surface.get_physical_device_surface_present_modes_khr(device, *surface));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/main.rs:388:21
[INFO] [stderr]     |
[INFO] [stderr] 388 |                     (properties.device_type == PhysicalDeviceType::DiscreteGpu && features.geometry_shader != 0)
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]   --> src/main.rs:53:20
[INFO] [stderr]    |
[INFO] [stderr] 53 |     let mut file = try!(fs::File::open(filename));
[INFO] [stderr]    |                    ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]   --> src/main.rs:61:5
[INFO] [stderr]    |
[INFO] [stderr] 61 |     try!(file.read_to_end(&mut buf));
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]    --> src/main.rs:171:28
[INFO] [stderr]     |
[INFO] [stderr] 171 |         let capabilities = try!(vk_surface.get_physical_device_surface_capabilities_khr(device, *surface));
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]    --> src/main.rs:172:23
[INFO] [stderr]     |
[INFO] [stderr] 172 |         let formats = try!(vk_surface.get_physical_device_surface_formats_khr(device, *surface));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]    --> src/main.rs:173:29
[INFO] [stderr]     |
[INFO] [stderr] 173 |         let present_modes = try!(vk_surface.get_physical_device_surface_present_modes_khr(device, *surface));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/main.rs:388:21
[INFO] [stderr]     |
[INFO] [stderr] 388 |                     (properties.device_type == PhysicalDeviceType::DiscreteGpu && features.geometry_shader != 0)
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 61:34...
[INFO] [stderr]   --> src/safe_create.rs:61:34
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&D`
[INFO] [stderr]               found  `&'d D`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:61:184
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 61:34...
[INFO] [stderr]   --> src/safe_create.rs:61:34
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:61:184
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 69:34...
[INFO] [stderr]   --> src/safe_create.rs:69:34
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&ash::extensions::Swapchain`
[INFO] [stderr]               found  `&'s ash::extensions::Swapchain`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:69:200
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 69:34...
[INFO] [stderr]   --> src/safe_create.rs:69:34
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'s ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:69:200
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 77:31...
[INFO] [stderr]   --> src/safe_create.rs:77:31
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                               ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&D`
[INFO] [stderr]               found  `&'s D`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:77:175
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                                                                                                                                                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 77:31...
[INFO] [stderr]   --> src/safe_create.rs:77:31
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                               ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'s ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:77:175
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                                                                                                                                                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 85:35...
[INFO] [stderr]   --> src/safe_create.rs:85:35
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&ash::extensions::Surface`
[INFO] [stderr]               found  `&'s ash::extensions::Surface`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:85:211
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 85:35...
[INFO] [stderr]   --> src/safe_create.rs:85:35
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'s ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:85:211
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 93:36...
[INFO] [stderr]   --> src/safe_create.rs:93:36
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                    ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&D`
[INFO] [stderr]               found  `&'d D`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:93:190
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                                                                                                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 93:36...
[INFO] [stderr]   --> src/safe_create.rs:93:36
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                    ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:93:190
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                                                                                                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 101:32...
[INFO] [stderr]    --> src/safe_create.rs:101:32
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'d D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:101:178
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 101:32...
[INFO] [stderr]    --> src/safe_create.rs:101:32
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:101:178
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 109:35...
[INFO] [stderr]    --> src/safe_create.rs:109:35
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'d D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:109:154
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                                                                                                                                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 109:35...
[INFO] [stderr]    --> src/safe_create.rs:109:35
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:109:154
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                                                                                                                                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present
[INFO] [stderr]    --> src/safe_create.rs:120:35
[INFO] [stderr]     |
[INFO] [stderr] 120 |         take_pipeline_ownership::<'d, D>(device, allocator, pipeline)
[INFO] [stderr]     |                                   ^^
[INFO] [stderr]     |
[INFO] [stderr] note: the late bound lifetime parameter is introduced here
[INFO] [stderr]    --> src/safe_create.rs:109:35
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                   ^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'img` as defined on the function body at 152:41...
[INFO] [stderr]    --> src/safe_create.rs:152:41
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                         ^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `safe_create::FramebufferCreateInfoSafe<'_>`
[INFO] [stderr]                found  `safe_create::FramebufferCreateInfoSafe<'img>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:152:210
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 152:32...
[INFO] [stderr]    --> src/safe_create.rs:152:32
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'device D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:152:210
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 152:32...
[INFO] [stderr]    --> src/safe_create.rs:152:32
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'device ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:152:210
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 161:33...
[INFO] [stderr]    --> src/safe_create.rs:161:33
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                 ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'device D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:161:196
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                                                                                                                                                                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 161:33...
[INFO] [stderr]    --> src/safe_create.rs:161:33
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                 ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'device ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:161:196
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                                                                                                                                                                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 169:30...
[INFO] [stderr]    --> src/safe_create.rs:169:30
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                              ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'device D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:169:189
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                                                                                                                                                                                             ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 169:30...
[INFO] [stderr]    --> src/safe_create.rs:169:30
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                              ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'device ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:169:189
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                                                                                                                                                                                             ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 61:34...
[INFO] [stderr]   --> src/safe_create.rs:61:34
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&D`
[INFO] [stderr]               found  `&'d D`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:61:184
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 61:34...
[INFO] [stderr]   --> src/safe_create.rs:61:34
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:63:97
[INFO] [stderr]    |
[INFO] [stderr] 63 |       unsafe_shader_module.map(|unsafe_shader_module| unsafe { VkOwned::new(unsafe_shader_module, move |shader_module| {
[INFO] [stderr]    |  _________________________________________________________________________________________________^
[INFO] [stderr] 64 | |         trace!("Destroying shader module: {:?}", shader_module);
[INFO] [stderr] 65 | |         device.destroy_shader_module(shader_module, allocator);
[INFO] [stderr] 66 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:61:184
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn create_shader_module_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &ShaderModuleCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<ShaderModule, impl Fn(ShaderModule)>> {
[INFO] [stderr]    |                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 69:34...
[INFO] [stderr]   --> src/safe_create.rs:69:34
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&ash::extensions::Swapchain`
[INFO] [stderr]               found  `&'s ash::extensions::Swapchain`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:69:200
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 69:34...
[INFO] [stderr]   --> src/safe_create.rs:69:34
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                  ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:71:85
[INFO] [stderr]    |
[INFO] [stderr] 71 |       unsafe_swapchain.map(|unsafe_swapchain| unsafe { VkOwned::new(unsafe_swapchain, move |swapchain| {
[INFO] [stderr]    |  _____________________________________________________________________________________^
[INFO] [stderr] 72 | |         trace!("Destroying swapchain: {:?}", swapchain);
[INFO] [stderr] 73 | |         vk_swapchain.destroy_swapchain_khr(swapchain, allocator);
[INFO] [stderr] 74 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'s ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:69:200
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn create_swapchain_khr_safe<'s>(vk_swapchain: &'s ash::extensions::Swapchain, create_info: &SwapchainCreateInfoKHR, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SwapchainKHR, impl Fn(SwapchainKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 77:31...
[INFO] [stderr]   --> src/safe_create.rs:77:31
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                               ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&D`
[INFO] [stderr]               found  `&'s D`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:77:175
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                                                                                                                                                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 77:31...
[INFO] [stderr]   --> src/safe_create.rs:77:31
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                               ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:79:88
[INFO] [stderr]    |
[INFO] [stderr] 79 |       unsafe_image_view.map(|unsafe_image_view| unsafe { VkOwned::new(unsafe_image_view, move |image_view| {
[INFO] [stderr]    |  ________________________________________________________________________________________^
[INFO] [stderr] 80 | |         trace!("Destroying image view: {:?}", image_view);
[INFO] [stderr] 81 | |         device.destroy_image_view(image_view, allocator);
[INFO] [stderr] 82 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'s ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:77:175
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn create_image_view_safe<'s, D: DeviceV1_0>(device: &'s D, create_info: &ImageViewCreateInfo, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<ImageView, impl Fn(ImageView)>> {
[INFO] [stderr]    |                                                                                                                                                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 85:35...
[INFO] [stderr]   --> src/safe_create.rs:85:35
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&ash::extensions::Surface`
[INFO] [stderr]               found  `&'s ash::extensions::Surface`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:85:211
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'s` as defined on the function body at 85:35...
[INFO] [stderr]   --> src/safe_create.rs:85:35
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:87:79
[INFO] [stderr]    |
[INFO] [stderr] 87 |       unsafe_surface.map(|unsafe_surface| unsafe { VkOwned::new(unsafe_surface, move |surface| {
[INFO] [stderr]    |  _______________________________________________________________________________^
[INFO] [stderr] 88 | |         trace!("Destroying surface: {:?}", surface);
[INFO] [stderr] 89 | |         vk_surface.destroy_surface_khr(surface, allocator)
[INFO] [stderr] 90 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'s ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:85:211
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn create_window_surface_safe<'s, I: InstanceV1_0>(vk: &'s I, vk_surface: &'s ash::extensions::Surface, window: &'s glfw::Window, allocator: Option<&'s AllocationCallbacks>) -> VkResult<VkOwned<SurfaceKHR, impl Fn(SurfaceKHR)>> {
[INFO] [stderr]    |                                                                                                                                                                                                                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 93:36...
[INFO] [stderr]   --> src/safe_create.rs:93:36
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                    ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `&D`
[INFO] [stderr]               found  `&'d D`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:93:190
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                                                                                                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 93:36...
[INFO] [stderr]   --> src/safe_create.rs:93:36
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                    ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]   --> src/safe_create.rs:95:76
[INFO] [stderr]    |
[INFO] [stderr] 95 |       unsafe_layout.map(|unsafe_layout| unsafe { VkOwned::new(unsafe_layout, move |layout| {
[INFO] [stderr]    |  ____________________________________________________________________________^
[INFO] [stderr] 96 | |         trace!("Destroying pipeline layout: {:?}", layout);
[INFO] [stderr] 97 | |         device.destroy_pipeline_layout(layout, allocator);
[INFO] [stderr] 98 | |     }) })
[INFO] [stderr]    | |_____^
[INFO] [stderr]    = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]               found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]    = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]   --> src/safe_create.rs:93:190
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn create_pipeline_layout_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &PipelineLayoutCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<PipelineLayout, impl Fn(PipelineLayout)>> {
[INFO] [stderr]    |                                                                                                                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 101:32...
[INFO] [stderr]    --> src/safe_create.rs:101:32
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'d D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:101:178
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 101:32...
[INFO] [stderr]    --> src/safe_create.rs:101:32
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:103:91
[INFO] [stderr]     |
[INFO] [stderr] 103 |       unsafe_render_pass.map(|unsafe_render_pass| unsafe { VkOwned::new(unsafe_render_pass, move |render_pass| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 104 | |         trace!("Destroying render pass: {:?}", render_pass);
[INFO] [stderr] 105 | |         device.destroy_render_pass(render_pass, allocator);
[INFO] [stderr] 106 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:101:178
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub fn create_render_pass_safe<'d, D: DeviceV1_0>(device: &'d D, create_info: &RenderPassCreateInfo, allocator: Option<&'d AllocationCallbacks>) -> VkResult<VkOwned<RenderPass, impl Fn(RenderPass)>> {
[INFO] [stderr]     |                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 109:35...
[INFO] [stderr]    --> src/safe_create.rs:109:35
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'d D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:109:154
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                                                                                                                                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'d` as defined on the function body at 109:35...
[INFO] [stderr]    --> src/safe_create.rs:109:35
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                   ^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:110:28
[INFO] [stderr]     |
[INFO] [stderr] 110 |       VkOwned::new(pipeline, move |pipeline| {
[INFO] [stderr]     |  ____________________________^
[INFO] [stderr] 111 | |         trace!("Destroying pipeline: {:?}", pipeline);
[INFO] [stderr] 112 | |         device.destroy_pipeline(pipeline, allocator);
[INFO] [stderr] 113 | |     })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'d ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:109:154
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                                                                                                                                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present
[INFO] [stderr]    --> src/safe_create.rs:120:35
[INFO] [stderr]     |
[INFO] [stderr] 120 |         take_pipeline_ownership::<'d, D>(device, allocator, pipeline)
[INFO] [stderr]     |                                   ^^
[INFO] [stderr]     |
[INFO] [stderr] note: the late bound lifetime parameter is introduced here
[INFO] [stderr]    --> src/safe_create.rs:109:35
[INFO] [stderr]     |
[INFO] [stderr] 109 | unsafe fn take_pipeline_ownership<'d, D: DeviceV1_0>(device: &'d D, allocator: Option<&'d AllocationCallbacks>, pipeline: Pipeline) -> VkOwned<Pipeline, impl Fn(Pipeline)> {
[INFO] [stderr]     |                                   ^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'img` as defined on the function body at 152:41...
[INFO] [stderr]    --> src/safe_create.rs:152:41
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                         ^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `safe_create::FramebufferCreateInfoSafe<'_>`
[INFO] [stderr]                found  `safe_create::FramebufferCreateInfoSafe<'img>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:152:210
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 152:32...
[INFO] [stderr]    --> src/safe_create.rs:152:32
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'device D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:152:210
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 152:32...
[INFO] [stderr]    --> src/safe_create.rs:152:32
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:154:91
[INFO] [stderr]     |
[INFO] [stderr] 154 |       unsafe_framebuffer.map(|unsafe_framebuffer| unsafe { VkOwned::new(unsafe_framebuffer, move |framebuffer| {
[INFO] [stderr]     |  ___________________________________________________________________________________________^
[INFO] [stderr] 155 | |         trace!("Destroying framebuffer: {:?}", framebuffer);
[INFO] [stderr] 156 | |         trace!("Destroyed framebuffer was created from {:?}", create_info.info_ref());
[INFO] [stderr] 157 | |         device.destroy_framebuffer(framebuffer, allocator);
[INFO] [stderr] 158 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'device ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:152:210
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn create_framebuffer_safe<'device, 'img, D: DeviceV1_0>(device: &'device D, create_info: FramebufferCreateInfoSafe<'img>, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Framebuffer, impl Fn(Framebuffer)>> {
[INFO] [stderr]     |                                                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 161:33...
[INFO] [stderr]    --> src/safe_create.rs:161:33
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                 ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'device D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:161:196
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                                                                                                                                                                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 161:33...
[INFO] [stderr]    --> src/safe_create.rs:161:33
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                 ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:163:94
[INFO] [stderr]     |
[INFO] [stderr] 163 |       unsafe_command_pool.map(|unsafe_command_pool| unsafe { VkOwned::new(unsafe_command_pool, move |command_pool| {
[INFO] [stderr]     |  ______________________________________________________________________________________________^
[INFO] [stderr] 164 | |         trace!("Destroying command pool: {:?}", command_pool);
[INFO] [stderr] 165 | |         device.destroy_command_pool(command_pool, allocator);
[INFO] [stderr] 166 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'device ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:161:196
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn create_command_pool_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &CommandPoolCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<CommandPool, impl Fn(CommandPool)>> {
[INFO] [stderr]     |                                                                                                                                                                                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 169:30...
[INFO] [stderr]    --> src/safe_create.rs:169:30
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                              ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `&D`
[INFO] [stderr]                found  `&'device D`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:169:189
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                                                                                                                                                                                             ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     |
[INFO] [stderr] note: first, the lifetime cannot outlive the lifetime `'device` as defined on the function body at 169:30...
[INFO] [stderr]    --> src/safe_create.rs:169:30
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                              ^^^^^^^
[INFO] [stderr] note: ...so that the types are compatible
[INFO] [stderr]    --> src/safe_create.rs:171:67
[INFO] [stderr]     |
[INFO] [stderr] 171 |       unsafe_sem.map(|unsafe_sem| unsafe { VkOwned::new(unsafe_sem, move |sem| {
[INFO] [stderr]     |  ___________________________________________________________________^
[INFO] [stderr] 172 | |         trace!("Destroying semaphore: {:?}", sem);
[INFO] [stderr] 173 | |         device.destroy_semaphore(sem, allocator);
[INFO] [stderr] 174 | |     }) })
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: expected  `std::option::Option<&ash::vk::AllocationCallbacks>`
[INFO] [stderr]                found  `std::option::Option<&'device ash::vk::AllocationCallbacks>`
[INFO] [stderr]     = note: but, the lifetime must be valid for the static lifetime...
[INFO] [stderr] note: ...so that return value is valid for the call
[INFO] [stderr]    --> src/safe_create.rs:169:189
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub fn create_semaphore_safe<'device, D: DeviceV1_0>(device: &'device D, create_info: &SemaphoreCreateInfo, allocator: Option<&'device AllocationCallbacks>) -> VkResult<VkOwned<Semaphore, impl Fn(Semaphore)>> {
[INFO] [stderr]     |                                                                                                                                                                                             ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 22 previous errors
[INFO] [stderr] 
[INFO] [stderr] For more information about this error, try `rustc --explain E0495`.
[INFO] [stderr] error: could not compile `vk-playground`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: aborting due to 22 previous errors
[INFO] [stderr] 
[INFO] [stderr] For more information about this error, try `rustc --explain E0495`.
[INFO] [stderr] error: could not compile `vk-playground`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "fd8f876517766b9816da7527b24a24d1e62885d796f531a2a38efca981a89039"`
[INFO] running `"docker" "rm" "-f" "fd8f876517766b9816da7527b24a24d1e62885d796f531a2a38efca981a89039"`
[INFO] [stdout] fd8f876517766b9816da7527b24a24d1e62885d796f531a2a38efca981a89039
