use alloc::string::String;
pub trait AsFilename {
fn as_filename(&self) -> &str;
}
impl AsFilename for str {
fn as_filename(&self) -> &str {
self
}
}
impl AsFilename for String {
fn as_filename(&self) -> &str {
self.as_str()
}
}
impl<T: AsFilename + ?Sized> AsFilename for &T {
fn as_filename(&self) -> &str {
(**self).as_filename()
}
}
#[cfg(feature = "std")]
impl AsFilename for std::path::Path {
fn as_filename(&self) -> &str {
self.to_str().expect("Path must be valid UTF-8")
}
}
#[cfg(feature = "std")]
impl AsFilename for std::path::PathBuf {
fn as_filename(&self) -> &str {
self.to_str().expect("Path must be valid UTF-8")
}
}
#[cfg(feature = "std")]
impl AsFilename for std::ffi::OsStr {
fn as_filename(&self) -> &str {
self.to_str().expect("OsStr must be valid UTF-8")
}
}
#[cfg(feature = "std")]
impl AsFilename for std::ffi::OsString {
fn as_filename(&self) -> &str {
self.to_str().expect("OsString must be valid UTF-8")
}
}