> Why should I write here Empty if compiled without?
The giving without Elem compiled, but to construct a real list without a trailing empty node will not work, because it would have to be infinite.
> What is Elem?
This is one of the options you declare the enumeration List, which contains two unnamed fields clear what types.
> I didn't advertise it further and found it mentioned in the documentation, but it works.
It's just a simple syntax enumerations (enum's) that in any textbook on grow is described, for example in Rastoke: https://doc.rust-lang.org/book/ch06-01-defining-an...