pub trait QuorumSet {
type Id: 'static;
type Iter: Iterator<Item = Self::Id>;
// Required methods
fn is_quorum<'a, I: Iterator<Item = &'a Self::Id> + Clone>(
&self,
ids: I,
) -> bool;
fn ids(&self) -> Self::Iter;
}Expand description
Common interface for every quorum rule supported by this crate.
A quorum is a collection of nodes that a read or write operation in a distributed system has to contact. See: http://web.mit.edu/6.033/2005/wwwdocs/quorum_note.html
Implementations must be upward-closed: adding IDs to an accepted quorum must keep it accepted.
The crate provides implementations for flat majority sets, joint quorum sets, and hierarchical
QuorumTree rules.
Required Associated Types§
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<ID> QuorumSet for BTreeSet<ID>
Majority quorum implementation for a flat voter set.
impl<ID> QuorumSet for BTreeSet<ID>
Majority quorum implementation for a flat voter set.
A candidate set is accepted when it contains more than half of the IDs in
this BTreeSet.
Source§impl<NID> QuorumSet for Vec<BTreeSet<NID>>
Joint quorum implementation for multiple flat voter sets.
impl<NID> QuorumSet for Vec<BTreeSet<NID>>
Joint quorum implementation for multiple flat voter sets.
A candidate set is accepted only when it is a majority quorum in every
member config. ids() returns the deduplicated union of all config IDs.
Implementors§
Source§impl<ID> QuorumSet for QuorumTree<ID>
Hierarchical quorum implementation for QuorumTree.
impl<ID> QuorumSet for QuorumTree<ID>
Hierarchical quorum implementation for QuorumTree.
Evaluation follows the tree structure. ids() returns all leaf IDs once,
even when the same node appears in more than one subtree.