use std::ffi::OsString;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use thiserror::Error;
#[cfg(test)]
mod tests;
mod paved_path;
pub use paved_path::PavedPath;
pub const UNIX_PATH_SEPARATOR: char = '/';
pub const WINDOWS_PATH_SEPARATOR: char = '\\';
pub const CURRENT_PATH_SEPARATOR: char = if cfg!(windows) {
WINDOWS_PATH_SEPARATOR
} else {
UNIX_PATH_SEPARATOR
};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord, Default)]
pub enum PathType {
#[default]
Absolute,
Relative,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
pub enum PathPrefix {
Drive(char),
UNC(OsString, OsString),
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]
pub enum PlatformStyle {
#[default]
Unix,
Windows,
}
#[derive(Error, Debug, Eq, PartialEq, Ord, PartialOrd, Clone, Copy)]
pub enum PavedAbsolutizeError {
#[error("The root path is relative")]
RootIsRelative,
#[error("The path is already absolute")]
PathIsAbsolute,
}