Как и многие программы, которые могут выводить цвет, rustc
определяет, идет ли его вывод непосредственно на консоль или перенаправляется в файл. Это происходит потому, что цвет обычно генерируется путем вставки специальных управляющих символов в вывод, и эти символы загрязняют файл.
Когда cargo
вызывает rustc
, он перехватывает свой вывод и печатает его за один раз приконец, так что он может вызывать rustc
параллельно несколько раз без путаницы их вывода. К сожалению, это скрывает тот факт, что он работает в консоли с rustc
(поскольку, строго говоря, это не так: он работает на cargo
, который сам работает в консоли).
rustc
имеет аргумент командной строки для принудительного выбора цвета, даже если он не запущен в консоли: --color always
. В Linux cargo
включает этот аргумент при вызове rustc
, поэтому сообщения об ошибках имеют цвет. Я подозреваю, что PowerShell обрабатывает цвета не так, как консоли Linux, что мешает вам работать так же. Вы можете попробовать это, установив переменную окружения RUSTFLAGS
в --color always
перед вызовом cargo build
.