use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "schema-export", derive(schemars::JsonSchema))]
pub enum Tier {
PublicRead,
Peer,
Control,
}
impl Tier {
pub const fn as_str(self) -> &'static str {
match self {
Tier::PublicRead => "public-read",
Tier::Peer => "peer",
Tier::Control => "control",
}
}
}
impl std::fmt::Display for Tier {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn tier_strings_and_serde() {
assert_eq!(Tier::PublicRead.as_str(), "public-read");
assert_eq!(Tier::Peer.to_string(), "peer");
assert_eq!(Tier::Control.as_str(), "control");
assert_eq!(
serde_json::to_string(&Tier::PublicRead).unwrap(),
"\"publicRead\""
);
assert_eq!(
serde_json::from_str::<Tier>("\"peer\"").unwrap(),
Tier::Peer
);
}
}