1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use rand::{self, Rng};

/// The identifier allocation strategy to use at a specified depth.
#[derive(Clone, PartialEq)]
pub enum LSEQStrategy {
  /// Generate identifiers by adding a value to the previous digit.
  AddFromLeft,
  /// Generate identifiers by subtracting a value to the next digit.
  SubtractFromRight,
}

impl LSEQStrategy {
  pub fn random() -> LSEQStrategy {
    let mut rng = rand::thread_rng();
    rng
      .choose(&[LSEQStrategy::AddFromLeft, LSEQStrategy::SubtractFromRight])
      .unwrap()
      .clone()
  }
}