use super::{GeoReplicationStatus, ListQueuesIncludeType};
use azure_core::error::{Error, ErrorKind};
use std::{
convert::{AsRef, From, Infallible},
fmt::{Display, Formatter},
str::FromStr,
};
impl<'a> From<&'a GeoReplicationStatus> for &'a str {
fn from(e: &'a GeoReplicationStatus) -> Self {
match e {
GeoReplicationStatus::Bootstrap => "bootstrap",
GeoReplicationStatus::Live => "live",
GeoReplicationStatus::Unavailable => "unavailable",
GeoReplicationStatus::UnknownValue(s) => s.as_ref(),
}
}
}
impl FromStr for GeoReplicationStatus {
type Err = Infallible;
fn from_str(s: &str) -> ::core::result::Result<Self, <Self as FromStr>::Err> {
Ok(match s {
"bootstrap" => GeoReplicationStatus::Bootstrap,
"live" => GeoReplicationStatus::Live,
"unavailable" => GeoReplicationStatus::Unavailable,
_ => GeoReplicationStatus::UnknownValue(s.to_string()),
})
}
}
impl AsRef<str> for GeoReplicationStatus {
fn as_ref(&self) -> &str {
match self {
GeoReplicationStatus::Bootstrap => "bootstrap",
GeoReplicationStatus::Live => "live",
GeoReplicationStatus::Unavailable => "unavailable",
GeoReplicationStatus::UnknownValue(s) => s.as_str(),
}
}
}
impl Display for GeoReplicationStatus {
fn fmt(&self, f: &mut Formatter<'_>) -> ::std::fmt::Result {
match self {
GeoReplicationStatus::Bootstrap => f.write_str("bootstrap"),
GeoReplicationStatus::Live => f.write_str("live"),
GeoReplicationStatus::Unavailable => f.write_str("unavailable"),
GeoReplicationStatus::UnknownValue(s) => f.write_str(s.as_str()),
}
}
}
impl FromStr for ListQueuesIncludeType {
type Err = Error;
fn from_str(s: &str) -> ::core::result::Result<Self, <Self as FromStr>::Err> {
Ok(match s {
"metadata" => ListQueuesIncludeType::Metadata,
_ => {
return Err(Error::with_message_fn(ErrorKind::DataConversion, || {
format!("unknown variant of ListQueuesIncludeType found: \"{s}\"")
}))
}
})
}
}
impl AsRef<str> for ListQueuesIncludeType {
fn as_ref(&self) -> &str {
match self {
ListQueuesIncludeType::Metadata => "metadata",
}
}
}
impl Display for ListQueuesIncludeType {
fn fmt(&self, f: &mut Formatter<'_>) -> ::std::fmt::Result {
match self {
ListQueuesIncludeType::Metadata => Display::fmt("metadata", f),
}
}
}