#[non_exhaustive]pub struct ZaddReport {
pub added: usize,
pub changed: usize,
pub applied: Vec<(f64, Vec<u8>)>,
}Expand description
Outcome of a flags-aware ZADD.
use kevy_store::{ScoreCompare, SetCondition, Store, ZaddFlags};
let mut s = Store::new();
s.zadd(b"z", &[(5.0, b"a".as_slice())])?;
let gt = ZaddFlags::new(SetCondition::Always, ScoreCompare::Greater).unwrap();
let r = s.zadd_flags(b"z", &[(1.0, b"a".as_slice()), (2.0, b"b")], gt)?;
assert_eq!((r.added, r.changed), (1, 1)); // `a` vetoed, `b` addedFields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.added: usizeMembers newly added.
use kevy_store::{Store, ZaddFlags};
let mut s = Store::new();
s.zadd(b"z", &[(1.0, b"a".as_slice())])?;
let r = s.zadd_flags(b"z", &[(2.0, b"a".as_slice()), (1.0, b"b")], ZaddFlags::default())?;
assert_eq!(r.added, 1); // only `b` is newchanged: usizeMembers added or whose score actually changed (CH reply).
use kevy_store::{Store, ZaddFlags};
let mut s = Store::new();
s.zadd(b"z", &[(1.0, b"a".as_slice()), (1.0, b"c")])?;
let pairs = [(2.0, b"a".as_slice()), (1.0, b"b"), (1.0, b"c")];
let r = s.zadd_flags(b"z", &pairs, ZaddFlags::default().with_ch(true))?;
assert_eq!(r.changed, 2); // `a` moved, `b` added, `c` unchangedapplied: Vec<(f64, Vec<u8>)>The (score, member) pairs actually applied, in input order —
vetoed pairs are absent. Lets an AOF writer log the effect
as a plain unconditional ZADD (deterministic on replay; a
conditional replayed against divergent state could veto
differently).
use kevy_store::{ScoreCompare, SetCondition, Store, ZaddFlags};
let mut s = Store::new();
s.zadd(b"z", &[(5.0, b"a".as_slice())])?;
let lt = ZaddFlags::new(SetCondition::Always, ScoreCompare::Less).unwrap();
let r = s.zadd_flags(b"z", &[(9.0, b"a".as_slice()), (3.0, b"b")], lt)?;
assert_eq!(r.applied, [(3.0, b"b".to_vec())]);Trait Implementations§
Source§impl Clone for ZaddReport
impl Clone for ZaddReport
Source§fn clone(&self) -> ZaddReport
fn clone(&self) -> ZaddReport
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 moreSource§impl Debug for ZaddReport
impl Debug for ZaddReport
Source§impl Default for ZaddReport
impl Default for ZaddReport
Source§fn default() -> ZaddReport
fn default() -> ZaddReport
Returns the “default value” for a type. Read more
Source§impl PartialEq for ZaddReport
impl PartialEq for ZaddReport
impl StructuralPartialEq for ZaddReport
Auto Trait Implementations§
impl Freeze for ZaddReport
impl RefUnwindSafe for ZaddReport
impl Send for ZaddReport
impl Sync for ZaddReport
impl Unpin for ZaddReport
impl UnsafeUnpin for ZaddReport
impl UnwindSafe for ZaddReport
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