=> is not an operator as such, it's part of the syntax of match and macro_rules!. The difference is there's no foo => bar meaning in isolation for the compiler, only when on the context of a match block, etc. (Technically this is true of all syntax, but the general assumption is that you're in a function body or the like)
You can read it in both those cases as meaning "when you match the pattern on the left, output the right": for match this is pattern matching a runtime value, for macro_rules! it's syntax. The direction is technically arbitrary, but the pattern is generally far smaller, and it's the established convention from other languages with similar features.