Guide: complex data types

I'm not happy about the hand-waving around `cmp`, but I'm not sure how to get around it.
Yes but you're picking up that terminology here. The section's title is "tuple structs and newtypes". 
I'm pointing out that "newtype" is a concept that Rust has borrowed from Haskell and that it's a very different thing than a "type synonym".
Haskell has two different keywords to express this, `type` and `newtype`.

Rust has `type` but does not have a direct equivalent of `newtype`. However it does have a pattern that is the moral equivalent to Haskell's `newtype`, which is the one you're introducing here. What I believe @huonw is saying above is that Rust does not actually need a different "newtype" keyword, because (unlike Haskell) the Rust compiler can optimize a struct containing only one field removing the indirection without expressing this explicitly in code.