use std::fmt::Debug;
pub use secrecy::{Secret, ExposeSecret};
pub trait Config: Debug {
type Strategy: crate::strategy::Strategy;
fn keys(&self) -> Vec<Secret<[u8; 32]>>;
fn primary_key(&self) -> Secret<[u8; 32]> {
let mut keys = self.keys();
assert!(!keys.is_empty(), "Must provide at least one key.");
keys.remove(0)
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::testing::TestConfigRandomized as TestConfig;
#[test]
fn primary_key_returns_first_key() {
let config = TestConfig;
assert_eq!(config.primary_key().expose_secret(), config.keys()[0].expose_secret());
}
}