PnCounter

Struct PnCounter 

Source
pub struct PnCounter { /* private fields */ }
Expand description

A state-based positive/negative counter with per-author components.

Implementations§

Source§

impl PnCounter

Source

pub const fn new() -> Self

Constructs a zero counter.

Source

pub fn increment( &mut self, author: AuthorId, amount: u64, ) -> Result<(), CrdtError>

Adds to an author’s monotonic positive component.

Source

pub fn decrement( &mut self, author: AuthorId, amount: u64, ) -> Result<(), CrdtError>

Adds to an author’s monotonic negative component.

Source

pub fn value(&self) -> Result<i128, CrdtError>

Computes the signed counter value with overflow checking.

Source

pub fn merge(&mut self, other: &Self) -> Result<(), CrdtError>

Deterministically combines another replica’s state.

Source

pub fn canonicalize_for_commit( &self, author: AuthorId, _sequence: u64, _context: &VersionVector, _next_operation: &mut u32, ) -> Result<Self, CrdtError>

Attributes the visible signed value solely to the authenticated commit author.

Trait Implementations§

Source§

impl Clone for PnCounter

Source§

fn clone(&self) -> PnCounter

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PnCounter

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'bytes, Ctx> Decode<'bytes, Ctx> for PnCounter

Source§

fn decode( __d777: &mut Decoder<'bytes>, __ctx777: &mut Ctx, ) -> Result<PnCounter, Error>

Decode a value using the given Decoder. Read more
§

fn nil() -> Option<Self>

If possible, return a nil value of Self. Read more
Source§

impl Default for PnCounter

Source§

fn default() -> PnCounter

Returns the “default value” for a type. Read more
Source§

impl<Ctx> Encode<Ctx> for PnCounter

Source§

fn encode<__W777>( &self, __e777: &mut Encoder<__W777>, __ctx777: &mut Ctx, ) -> Result<(), Error<__W777::Error>>
where __W777: Write,

Encode a value of this type using the given Encoder. Read more
§

fn is_nil(&self) -> bool

Is this value of Self a nil value? Read more
Source§

impl FieldState for PnCounter

Source§

const CRDT_KIND: CrdtKind = CrdtKind::PnCounter

The deterministic merge strategy.
Source§

type Value = i128

The application value carried by this field strategy.
Source§

fn encode_state(&self) -> Result<Vec<u8>, RecordError>

Encodes complete causal field state.
Source§

fn decode_state(bytes: &[u8]) -> Result<Self, RecordError>

Strictly decodes complete causal field state.
Source§

fn visible_values(&self) -> Result<Vec<Vec<u8>>, RecordError>

Encodes each currently visible application value for filtering and indexes.
Source§

fn merge_state(&mut self, other: &Self) -> Result<(), RecordError>

Deterministically merges complete causal state from another replica.
Source§

fn canonicalize_for_commit( &self, author: AuthorId, sequence: u64, context: &VersionVector, next_operation: &mut u32, ) -> Result<Self, RecordError>

Reissues all causal identities from one authenticated commit envelope.
Source§

fn value_type_name() -> &'static str

Stable Rust logical value type used in schema compatibility checks.
Source§

impl Merge for PnCounter

Source§

fn merge(&mut self, other: &Self) -> Result<(), CrdtError>

Merges other into this value.
Source§

impl PartialEq for PnCounter

Source§

fn eq(&self, other: &PnCounter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for PnCounter

Source§

impl StructuralPartialEq for PnCounter

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> RecordKey for T
where T: Encode<()> + for<'bytes> Decode<'bytes, ()>,

Source§

fn encode_key(&self) -> Result<Vec<u8>, RecordError>

Encodes this key into its unique durable representation.
Source§

fn decode_key(bytes: &[u8]) -> Result<T, RecordError>

Strictly decodes a key from its unique durable representation.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.