openraft 0.10.0-alpha.18

Advanced Raft consensus
Documentation
### How to initialize a cluster?

The simplest and most appropriate way to initialize a cluster is to call
`Raft::initialize()` on **exactly one node**. The other nodes should remain
empty and wait for the initialized node to replicate logs to them.

Assuming there are three nodes `n1, n2, n3`, there are two approaches:

1. **Single-step method**:
   Call `Raft::initialize()` on one node (e.g., `n1`) with the configuration of
   all three nodes: `n1.initialize(btreeset! {1,2,3})`.
   The initialized node will then replicate the membership to the other nodes.

2. **Incremental method**:
   First, call `Raft::initialize()` on `n1` with configuration containing only `n1`
   itself: `n1.initialize(btreeset! {1})`.
   Subsequently use `Raft::change_membership()` on `n1` to add `n2` and `n3`
   into the cluster.

The incremental method provides flexibility to start with a single-node
cluster for testing and expand it later for production.