use std::path::{Path, PathBuf};
pub fn convert_chars<Chars>(chars: Chars, separator: char) -> impl Iterator<Item = char>
where
Chars: Iterator<Item = char>,
{
chars.map(move |ch| match ch {
'/' | '\\' => separator,
_ => ch,
})
}
pub fn convert_string<Text: AsRef<str>>(text: Text, separator: char) -> String {
convert_chars(text.as_ref().chars(), separator).collect()
}
pub fn convert_path<P: AsRef<Path>>(path: P, separator: char) -> PathBuf {
from_string(path.as_ref().to_string_lossy(), separator)
}
pub fn from_string<Text: AsRef<str>>(text: Text, separator: char) -> PathBuf {
PathBuf::from(convert_string(text, separator))
}
pub fn to_string<P: AsRef<Path>>(path: P, separator: char) -> String {
convert_string(path.as_ref().to_string_lossy(), separator)
}