This sounds fairly doable. Rust pseudocode:
``` // Traits for the operations you want to perform... trait Map<K,V> { ... operations ... } trait List<K,V> { ... operations ... }
// Functions which dispatch for your data/operation distribution fn gimme_map<K, V>(data: DataDistribution, op: OperationDistribution) -> impl Map<K, V> { .. }
enum DataDistribution { ... } enum OperationDistribution { ... } ```