lnks 0.2.0

A library for reading and writing windows shortcuts (.lnk).
Documentation
use std::{
    env, fs,
    path::{Path, PathBuf},
};

use uuid::Uuid;

pub struct TempPath {
    path: PathBuf,
}

impl TempPath {
    pub fn new(prefix: &str, ext: &str) -> Self {
        let path = env::temp_dir().join(format!(
            "{}-{}-{}.{}",
            prefix,
            env!("CARGO_CRATE_NAME"),
            Uuid::new_v4(),
            ext
        ));

        Self { path }
    }

    pub fn path(&self) -> &Path {
        &self.path
    }
}

impl Drop for TempPath {
    fn drop(&mut self) {
        if let Ok(meta) = fs::metadata(&self.path) {
            if meta.is_dir() {
                let _ = fs::remove_dir_all(&self.path);
            } else {
                let _ = fs::remove_file(&self.path);
            }
        }
    }
}