bitflags::bitflags! {
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub struct Capability: u32 {
const SMFIF_ADDHDRS = 0x0000_0001;
const SMFIF_CHGBODY = 0x0000_0002;
const SMFIF_ADDRCPT = 0x0000_0004;
const SMFIF_DELRCPT = 0x0000_0008;
const SMFIF_CHGHDRS = 0x0000_0010;
const SMFIF_QUARANTINE = 0x0000_0020;
const SMFIF_CHGFROM = 0x0000_0040;
const SMFIF_ADDRCPT_PAR = 0x0000_0080;
}
}
impl Default for Capability {
fn default() -> Self {
Capability::all()
}
}
impl Capability {
#[must_use]
pub fn merge_regarding_version(self, _version: u32, other: Self) -> Self {
self.intersection(other)
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_create_valid() {
let input: u32 = 0x0000_0001;
let bitflags = Capability::from_bits(input);
assert!(bitflags.is_some());
}
#[test]
fn test_create_invalid() {
let input: u32 = 0x0000_0100;
let bitflags = Capability::from_bits(input);
assert!(bitflags.is_none());
}
}