From 431ff6115fee6063e4dad799a28d353b08dc69c0 Mon Sep 17 00:00:00 2001 From: tottoto Date: Tue, 21 Mar 2023 16:19:35 +0900 Subject: [PATCH] Remove bitflags --- Cargo.toml | 1 - src/common/cache_control.rs | 37 ++++++++++++++++++++++++++----------- src/lib.rs | 2 -- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b49c86e7..4fddd89a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,6 @@ members = [ http = "0.2.0" headers-core = { version = "0.2", path = "./headers-core" } base64 = "0.13" -bitflags = "1.0" bytes = "1" mime = "0.3.14" sha1 = "0.10" diff --git a/src/common/cache_control.rs b/src/common/cache_control.rs index 85e48fcb..afb69249 100644 --- a/src/common/cache_control.rs +++ b/src/common/cache_control.rs @@ -44,17 +44,32 @@ pub struct CacheControl { s_max_age: Option, } -bitflags! { - struct Flags: u32 { - const NO_CACHE = 0b000000001; - const NO_STORE = 0b000000010; - const NO_TRANSFORM = 0b000000100; - const ONLY_IF_CACHED = 0b000001000; - const MUST_REVALIDATE = 0b000010000; - const PUBLIC = 0b000100000; - const PRIVATE = 0b001000000; - const PROXY_REVALIDATE = 0b010000000; - const IMMUTABLE = 0b100000000; +#[derive(Debug, Clone, PartialEq)] +struct Flags { + bits: u64, +} + +impl Flags { + const NO_CACHE: Self = Self { bits: 0b000000001 }; + const NO_STORE: Self = Self { bits: 0b000000010 }; + const NO_TRANSFORM: Self = Self { bits: 0b000000100 }; + const ONLY_IF_CACHED: Self = Self { bits: 0b000001000 }; + const MUST_REVALIDATE: Self = Self { bits: 0b000010000 }; + const PUBLIC: Self = Self { bits: 0b000100000 }; + const PRIVATE: Self = Self { bits: 0b001000000 }; + const PROXY_REVALIDATE: Self = Self { bits: 0b010000000 }; + const IMMUTABLE: Self = Self { bits: 0b100000000 }; + + fn empty() -> Self { + Self { bits: 0 } + } + + fn contains(&self, flag: Self) -> bool { + (self.bits & flag.bits) != 0 + } + + fn insert(&mut self, flag: Self) { + self.bits |= flag.bits; } } diff --git a/src/lib.rs b/src/lib.rs index 0d27a810..971d5677 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -73,8 +73,6 @@ //! ``` extern crate base64; -#[macro_use] -extern crate bitflags; extern crate bytes; extern crate headers_core; extern crate http;