Skip to main content

ReadOrBoth

Enum ReadOrBoth 

Source
pub enum ReadOrBoth<R, W> {
    Read(R),
    Both(BothQuorums<R, W>),
}
Expand description

A quorum rule that is either a read rule alone or a BothQuorums.

A consensus election picks the variant by how it orders leaders:

  • With totally ordered ballots, as in Paxos, use Read. Two leaders always differ in ballot, and a voter rejects entries from a ballot smaller than one it granted. So read quorums need to intersect only write quorums.
  • When two leaders of one term are not ordered, as in Raft, use Both. Any two winning vote sets must then intersect, but two read quorums may be disjoint.

ids() returns the read IDs for Read, and the union of the read and write IDs for Both, each ID once.

Variants§

§

Read(R)

Accepts an ID set when the read rule accepts it.

§

Both(BothQuorums<R, W>)

Accepts an ID set when both the read rule and the write rule accept it.

Trait Implementations§

Source§

impl<R: Clone, W: Clone> Clone for ReadOrBoth<R, W>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<R: Debug, W: Debug> Debug for ReadOrBoth<R, W>

Source§

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

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

impl<R, W> QuorumSet for ReadOrBoth<R, W>
where R: QuorumSet, W: QuorumSet<Id = R::Id>, R::Id: Ord,

Source§

type Id = <R as QuorumSet>::Id

Node ID type in this quorum set.
Source§

type Iter = IntoIter<<R as QuorumSet>::Id>

Iterator over every voter ID tracked by this quorum set. Read more
Source§

fn is_quorum<'a, I>(&self, ids: I) -> bool
where Self::Id: 'a, I: Iterator<Item = &'a Self::Id> + Clone,

Return true if the candidate IDs satisfy this quorum rule. Read more
Source§

fn ids(&self) -> Self::Iter

Return all voter IDs in this quorum set.

Auto Trait Implementations§

§

impl<R, W> Freeze for ReadOrBoth<R, W>
where R: Freeze, BothQuorums<R, W>: Freeze,

§

impl<R, W> RefUnwindSafe for ReadOrBoth<R, W>

§

impl<R, W> Send for ReadOrBoth<R, W>
where R: Send, BothQuorums<R, W>: Send,

§

impl<R, W> Sync for ReadOrBoth<R, W>
where R: Sync, BothQuorums<R, W>: Sync,

§

impl<R, W> Unpin for ReadOrBoth<R, W>
where R: Unpin, BothQuorums<R, W>: Unpin,

§

impl<R, W> UnsafeUnpin for ReadOrBoth<R, W>

§

impl<R, W> UnwindSafe for ReadOrBoth<R, W>

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> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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.