use std::{
path::{Path, PathBuf},
sync::atomic::{AtomicI32, Ordering},
};
static UNIQUE_FILE_FD: AtomicI32 = AtomicI32::new(1);
static FOLDER_FD: AtomicI32 = AtomicI32::new(1);
#[allow(clippy::inline_always)]
#[inline(always)]
#[must_use]
pub fn get_new_unique_file_fd() -> i32 {
UNIQUE_FILE_FD.fetch_add(1, Ordering::SeqCst)
}
#[allow(clippy::inline_always)]
#[inline(always)]
#[must_use]
pub fn get_new_unique_folder_fd() -> i32 {
FOLDER_FD.fetch_add(1, Ordering::SeqCst)
}
#[must_use]
pub fn join_many<PathTy, IterTy>(base: &Path, parts: IterTy) -> PathBuf
where
PathTy: AsRef<Path>,
IterTy: IntoIterator<Item = PathTy>,
{
let mut as_owned = PathBuf::from(base);
for part in parts {
as_owned = as_owned.join(part.as_ref());
}
as_owned
}