#[non_exhaustive]pub enum HExpireCond {
Always,
Nx,
Xx,
Gt,
Lt,
}Expand description
Condition flags for HEXPIRE (NX/XX/GT/LT; at most one).
assert_eq!(kevy_store::HExpireCond::default(), kevy_store::HExpireCond::Always);Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Always
Unconditional.
use kevy_store::{HExpireCond, Store};
let mut s = Store::new();
s.hset(b"h", &[(b"f".as_slice(), b"v".as_slice())])?;
let t = kevy_store::now_unix_ms() + 60_000;
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Always)?, [1]);
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t + 1, HExpireCond::Always)?, [1]);Nx
Only when the field has no TTL.
use kevy_store::{HExpireCond, Store};
let mut s = Store::new();
s.hset(b"h", &[(b"f".as_slice(), b"v".as_slice())])?;
let t = kevy_store::now_unix_ms() + 60_000;
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Nx)?, [1]);
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Nx)?, [0]);Xx
Only when the field already has a TTL.
use kevy_store::{HExpireCond, Store};
let mut s = Store::new();
s.hset(b"h", &[(b"f".as_slice(), b"v".as_slice())])?;
let t = kevy_store::now_unix_ms() + 60_000;
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Xx)?, [0]);
s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Always)?;
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Xx)?, [1]);Gt
Only when the new deadline is later than the current one (no TTL counts as infinitely late — GT never replaces it).
use kevy_store::{HExpireCond, Store};
let mut s = Store::new();
s.hset(b"h", &[(b"f".as_slice(), b"v".as_slice())])?;
let t = kevy_store::now_unix_ms() + 60_000;
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Gt)?, [0]);
s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Always)?;
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t + 1, HExpireCond::Gt)?, [1]);Lt
Only when the new deadline is earlier (no TTL = always).
use kevy_store::{HExpireCond, Store};
let mut s = Store::new();
s.hset(b"h", &[(b"f".as_slice(), b"v".as_slice())])?;
let t = kevy_store::now_unix_ms() + 60_000;
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t, HExpireCond::Lt)?, [1]);
assert_eq!(s.hexpire_at(b"h", &[b"f".as_slice()], t + 1, HExpireCond::Lt)?, [0]);Implementations§
Source§impl HExpireCond
impl HExpireCond
Trait Implementations§
Source§impl Clone for HExpireCond
impl Clone for HExpireCond
Source§fn clone(&self) -> HExpireCond
fn clone(&self) -> HExpireCond
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for HExpireCond
Source§impl Debug for HExpireCond
impl Debug for HExpireCond
Source§impl Default for HExpireCond
impl Default for HExpireCond
Source§fn default() -> HExpireCond
fn default() -> HExpireCond
Returns the “default value” for a type. Read more
impl Eq for HExpireCond
Source§impl Hash for HExpireCond
impl Hash for HExpireCond
Source§impl PartialEq for HExpireCond
impl PartialEq for HExpireCond
impl StructuralPartialEq for HExpireCond
Auto Trait Implementations§
impl Freeze for HExpireCond
impl RefUnwindSafe for HExpireCond
impl Send for HExpireCond
impl Sync for HExpireCond
impl Unpin for HExpireCond
impl UnsafeUnpin for HExpireCond
impl UnwindSafe for HExpireCond
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more