kristof:
Lastly, just as a utility feature, it would be nice to be able to declare an abstract struct. These are structures only meant for the parameterization and organization of code. You can only use them to attach impls, implement traits, and use them as generic parameters. You may not include them as formal parameters, you may not create values of them, and you may not make them members of other compound datatypes. When inheritance comes around, maybe you inherent from them, but that is another open question.
Can't you do most of that with zero-variant enums? They can't be constructed, so while you can use them as formal parameters such functions cannot be called.