pub trait KeyExtract<S, A, K>: Send + Sync { // Required method fn extract(&self, s: &S, a: &A, idx: usize) -> K; }