>>101586208
>if you can explain to me what a higher kinded type is that'd be epic
Sure. So a generic is like a function, but at the type level, right? For example, Vec takes one type and returns one type. It's the type-level equivalent of a simple function that takes one value and returns one value.
Now, what would be the type-level equivalent of a higher-order function that can take another function as an argument? It would be like a generic that can take another generic type as an argument. For example, Vec itself, rather than Vec<String>.
I don't know Rust so I'm going to use Java-like pseudocode.
class MyWeirdDataStructure<TMap<_, _> extends Map<_, _>> {
val a = new TMap<String, Integer>();
val b = new TMap<Hash, String>();
val c = new TMap<Integer, String>();
}