use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum SameSite {
#[cfg_attr(feature = "serde", serde(alias = "strict"))]
Strict,
#[cfg_attr(feature = "serde", serde(alias = "lax"))]
Lax,
#[cfg_attr(feature = "serde", serde(alias = "none"))]
None,
}
impl SameSite {
#[inline]
pub fn is_strict(&self) -> bool {
match *self {
SameSite::Strict => true,
SameSite::Lax | SameSite::None => false,
}
}
#[inline]
pub fn is_lax(&self) -> bool {
match *self {
SameSite::Lax => true,
SameSite::Strict | SameSite::None => false,
}
}
#[inline]
pub fn is_none(&self) -> bool {
match *self {
SameSite::None => true,
SameSite::Lax | SameSite::Strict => false,
}
}
pub fn as_str(&self) -> &'static str {
match *self {
SameSite::Strict => "Strict",
SameSite::Lax => "Lax",
SameSite::None => "None",
}
}
}
impl fmt::Display for SameSite {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(self.as_str())
}
}