use std::{ffi::OsString, fmt};
use crate::ArgError;
#[cfg(doc)]
use crate::{core::Core, ArgSplitter};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum OwnedItem {
Word(OsString),
Flag(String),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ItemOs<'a> {
Word(OsString),
Flag(&'a str),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Item<'a> {
Word(String),
Flag(&'a str),
}
impl fmt::Display for Item<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Item::Flag(flag) => flag.fmt(f),
Item::Word(word) => word.fmt(f),
}
}
}
impl fmt::Display for ItemOs<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ItemOs::Flag(flag) => flag.fmt(f),
ItemOs::Word(word) => word.to_string_lossy().fmt(f),
}
}
}
impl ItemOs<'_> {
pub fn unexpected(&self) -> ArgError {
match self {
ItemOs::Flag(f) => ArgError::unknown_flag(f),
ItemOs::Word(w) => ArgError::unexpected_argument(w),
}
}
}
impl Item<'_> {
pub fn unexpected(&self) -> ArgError {
match self {
Item::Flag(f) => ArgError::unknown_flag(f),
Item::Word(w) => ArgError::unexpected_argument(w),
}
}
}