4 ms·
> - It's impossible to describe a type that "implements trait A and may or may not implement trait B" So, specialization? Or something else? I haven't found a
by insanitybit 4y ago
> - It's impossible to describe a type that "implements trait A and may or may not implement trait B"
So, specialization? Or something else? I haven't found a need for specialization. I remember when I came from C++ I had a hard time adjusting to "no specialization, no variadics" but idk I haven't missed it in years.
> - It's impossible to be generic over a trait (not a type that implements a trait, the trait itself)
Not sure I understand.
- nicoburns 4y ago> So, specialization? Basically yes. But that works with dynamic dispatch (trait objects) as well as static dispatch (generics). > Not sure I understand. A specific pattern I'd like to be able to represent is: trait AlgorithmAInputData { ... } trait AlgorithmA { trait InputData = AlgorithmAInputData; ... } trait DataStorage<trait AlgorithmA> { type InputData : Algorithm::InputData; fn get_input_data() -> InputData; } fn compute_algorithm_a<Storage: DataStorage<AlgorithmA>>() { ... }