Машиночитаемый вывод.

Cargo может выдавать информацию о вашей сборке и вашем проекте в формате JSON. Cargo can output information about project and build in JSON format.

Информация о структуре проекта

Вы можете использовать команду cargo metadata чтобы получить информацию о структуре проекта и зависимостях. Вывод данной команды будет примерно таким:

{
  // Версия формата сообщений .
  "version": integer,

  // Список пакетов для проекта, включая зависимости.
  "packages": [
    {
      // Уникальный идентификатор пакета.
      "id": PackageId,

      "name": string,

      "version": string,

      "source": SourceId,

      // Список объявленных зависимостей. Используемые зависимости описаны в пол `resolve`.
      "dependencies": [ Dependency ],

      "targets: [ Target ],

      // Путь до Cargo.toml
      "manifest_path": string,
    }
  ],

  "workspace_members": [ PackageId ],

  // Граф зависимостей.
  "resolve": {
     "nodes": [
       {
         "id": PackageId,
         "dependencies": [ PackageId ]
       }
     ]
  }
}

Ошибки компилятора

Если вы добавите параметр --message-format json для команд типа cargo build, Cargo выдаст ошибки и предупреждения компилятора в формате JSON. Сообщения будут выведены в стандартный поток вывода. Каждое сообщение занимает ровно одну строчку и не содержит в себе символа перевода строки \n. Благодаря этому их можно обрабатывать не дожидаясь окончания сборки.

Формат сообщений выглядит примерно так:

{
  // Тип сообщения.
  "reason": "compiler-message",

  // Уникальный идентификатор компилируемого пакета.
  "package_id": PackageId,

  // Уникальный идентификатор для типа сборки (например, bin)
  "target": Target,

  // Сообщение от компилятора в формате JSON.
  "message": {...}
}

Спецификация пакетов и типов сборки такая же как и у cargo metadata.