Currently, if you run cargo --color always build, it'll only enable colors for the output of cargo itself, but not for any errors produced by rustc. To get colors from both cargo build and rustc, you have to use the following complex command:
$ cargo rustc --color always -- --color always 2>&1
I think cargo should forward the --color argument to rustc.