use core::ffi::c_void;
use core::ptr;
use windows_sys::core::{PCWSTR, PWSTR};
use windows_sys::Win32::System::Com::CoTaskMemFree;
pub struct Guard(PWSTR);
impl Guard {
#[must_use]
#[allow(non_snake_case)]
pub fn as_out_ppszPath(&mut self) -> &mut PWSTR {
&mut self.0
}
#[must_use]
pub fn as_pcwstr(&self) -> PCWSTR {
self.0
}
}
impl Default for Guard {
fn default() -> Self {
Self(ptr::null_mut())
}
}
impl Drop for Guard {
fn drop(&mut self) {
let ptr = self.0.cast::<c_void>();
unsafe {
CoTaskMemFree(ptr);
}
}
}