ashpan/
entry.rs

1use ash::{prelude::VkResult, vk};
2
3use crate::GuardedResource;
4
5/// Extension trait adding guarded methods to [`ash::Entry`]
6pub trait EntryExt {
7    /// Same as [ash::Entry::create_instance] but returns guarded instance
8    #[allow(clippy::missing_safety_doc)]
9    unsafe fn create_guarded_instance<'a>(
10        &self,
11        create_info: &vk::InstanceCreateInfo,
12        allocation_callbacks: Option<&'a vk::AllocationCallbacks>,
13    ) -> VkResult<GuardedResource<'a, ash::Instance, &'static ()>>;
14}
15
16impl EntryExt for ash::Entry {
17    unsafe fn create_guarded_instance<'a>(
18        &self,
19        create_info: &vk::InstanceCreateInfo,
20        allocation_callbacks: Option<&'a vk::AllocationCallbacks>,
21    ) -> VkResult<GuardedResource<'a, ash::Instance, &'static ()>> {
22        let instance = self.create_instance(create_info, allocation_callbacks)?;
23        Ok(GuardedResource::new(instance, &(), allocation_callbacks))
24    }
25}