Struct crdts::orswot::Orswot [] [src]

pub struct Orswot<Member: Ord + Clone + Encodable + Decodable, Actor: Ord + Clone + Encodable + Decodable> {
    // some fields omitted
}

Orswot is an add-biased or-set without tombstones ported from the riak_dt CRDT library.

Methods

impl<Member: Ord + Clone + Encodable + Decodable, Actor: Ord + Clone + Encodable + Decodable> Orswot<Member, Actor>
[src]

fn new() -> Orswot<Member, Actor>

Returns a new Orswot instance.

fn add(&mut self, member: Member, actor: Actor)

Add a single element.

Safety

add should never be passed identical actor arguments for different replicas. This will result in data loss:

use crdts::Orswot;
let (mut a, mut b) = (Orswot::new(), Orswot::new());
a.add(1, 1);
b.add(2, 1);
a.merge(b);
assert!(a.value().is_empty());

fn add_all(&mut self, members: Vec<Member>, actor: Actor)

Add several members.

unsafe fn remove(&mut self, member: Member) -> Option<VClock<Actor>>

Remove a member without providing a witnessing context. Returns an existing context VClock if it was present.

fn remove_with_context(&mut self, member: Member, context: &VClock<Actor>)

Remove a member using a witnessing context.

unsafe fn remove_all(&mut self, members: Vec<Member>) -> Vec<Option<VClock<Actor>>>

Remove multiple members, without providing a witnessing context.

fn remove_all_with_context(&mut self, members: Vec<Member>, context: &VClock<Actor>)

Remove multiple members with a witnessing context.

fn value(&self) -> Vec<Member>

Retrieve the current members.

fn merge(&mut self, other: Orswot<Member, Actor>)

Merge combines another Orswot with this one.

fn precondition_context(&self) -> VClock<Actor>

Returns the current VClock associated with this Orswot.

Trait Implementations

Derived Implementations

impl<Member: Decodable + Ord + Clone + Encodable + Decodable, Actor: Decodable + Ord + Clone + Encodable + Decodable> Decodable for Orswot<Member, Actor>
[src]

fn decode<__DMemberActor: Decoder>(__arg_0: &mut __DMemberActor) -> Result<Orswot<Member, Actor>, __DMemberActor::Error>

impl<Member: Encodable + Ord + Clone + Encodable + Decodable, Actor: Encodable + Ord + Clone + Encodable + Decodable> Encodable for Orswot<Member, Actor>
[src]

fn encode<__SMemberActor: Encoder>(&self, __arg_0: &mut __SMemberActor) -> Result<(), __SMemberActor::Error>

impl<Member: Hash + Ord + Clone + Encodable + Decodable, Actor: Hash + Ord + Clone + Encodable + Decodable> Hash for Orswot<Member, Actor>
[src]

fn hash<__HMemberActor: Hasher>(&self, __arg_0: &mut __HMemberActor)

Feeds this value into the state given, updating the hasher as necessary.

fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
1.3.0

Feeds a slice of this type into the state provided.

impl<Member: Eq + Ord + Clone + Encodable + Decodable, Actor: Eq + Ord + Clone + Encodable + Decodable> Eq for Orswot<Member, Actor>
[src]

impl<Member: PartialEq + Ord + Clone + Encodable + Decodable, Actor: PartialEq + Ord + Clone + Encodable + Decodable> PartialEq for Orswot<Member, Actor>
[src]

fn eq(&self, __arg_0: &Orswot<Member, Actor>) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, __arg_0: &Orswot<Member, Actor>) -> bool

This method tests for !=.

impl<Member: Clone + Ord + Clone + Encodable + Decodable, Actor: Clone + Ord + Clone + Encodable + Decodable> Clone for Orswot<Member, Actor>
[src]

fn clone(&self) -> Orswot<Member, Actor>

Returns a copy of the value. Read more

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

Performs copy-assignment from source. Read more

impl<Member: Debug + Ord + Clone + Encodable + Decodable, Actor: Debug + Ord + Clone + Encodable + Decodable> Debug for Orswot<Member, Actor>
[src]

fn fmt(&self, __arg_0: &mut Formatter) -> Result

Formats the value using the given formatter.