Ответ 1
С помощью шагов, которые вы выполнили, Rustup уже настроен для управления вашими rustfmt
файлами rustfmt
. Это означает, что они могут автоматически обновляться вместе со своими инструментальными целями вместо того, чтобы полагаться на cargo install
. Что здесь отсутствует фактическая rustfmt
компонент, который Rustup пытается выполнить.
Чтобы Rustup управлял rustfmt
, см. Следующие шаги:
- Как только вы обновите Rustup до последней версии, вы можете получить сообщение
warning: tool rustfmt is already installed
. Удалите двоичные файлы из двоичной папки Cargo, как это было предложено.cargo uninstall rustfmt
(илиrustfmt-nightly
если вы его установили) работает хорошо. - Запустите
rustup update
чтобы он заполнил удаленные двоичные файлы с помощью собственного управляемогоrustfmt
иrustfmt
cargo-fmt
. - После этого вам все равно нужно установить компонент
rustfmt-preview
для каждой инструментальной цепочки, с которой вы будете работать. Не все инструментальные средства предоставляют этот компонент на данный момент, но последниеstable
инструментальные цепочки обязательно будут иметь его. Следовательно, убедитесь, что эта инструментальная цепочка установлена, а затем:
$ rustup component add rustfmt-preview
При этом вызов rustfmt
с использованием этой инструментальной цепочки должен работать:
$ rustup run stable rustfmt --version
rustfmt 0.99.4-stable (1c40881 2018-08-27)
Текущее состояние использования rustfmt
управляемого Rustup, может быть немного запутанным. Есть несколько релевантных вопросов и PR по этому вопросу (№ 1305 и № 1310), и после них приведены необходимые подсказки для правильной работы.