Под новогодние праздники был выпущен Rust 1.5. Так как близится релиз 1.6, хочу наверстать упущенное, и рассказать о том, что появилось в последней стабильной версии. Существенные изменения затронули Cargo!
Основное изменение, которое вы получите — это команда cargo install. Всё её прелесть в возможности установить внешние плагины на ваш cargo. Список доступных расширений можно посмотреть здесь, крейты с плагинами чаще всего имеют префикс cagro-. Приведу пример использования нескольких их них.
cargo-check
Команда check позволяет проверить код, без сборки. Устанавливаем:
cargo install cargo-check
Использовать очень просто, точно так же как вы используете команду build:
cargo check
Команда выводит все предупреждения и ошибки по исходникам Rust вашего проекта.
cargo-edit
Команда edit позволяет управлять зависимостями. Устанавливаем:
cargo install cargo-edit
На самом деле будет установлено сразу 2 команды: add и list. Используем следующим образом:
cargo list env_logger ~0.3 hyper ~0.7 json_macro 0.1.1 log ~0.3 lua git: "https://github.com/jcmoyer/rust-lua53" mould path: "C:\\DEVELOPMENT\\rust-dev\\mould" r2d2 0.6.3 r2d2_sqlite 0.0.4 rusqlite 0.6.0 rust-crypto 0.2.34 rustc-serialize ~0.3.16 static-server path: "C:\\DEVELOPMENT\\rust-dev\\static-server" uuid 0.1.18
Добавляем зависимость с помощью:
cargo add <crate> [--dev|--build|--optional] [--vers=<ver>|--git=<uri>|--path=<uri>] [options]
cargo-graph
Команда graph генерирует граф зависимостей в формате GraphViz. Возможно вы уже видели подобное в некоторых библиотеках на Rust. Устанавливаем:
cargo install cargo-graph
Граф генерируется в stdout, поэтому укажите название файла:
cargo graph > deps.dot
После генерируем PNG из DOT файла:
dot deps.dot -Tpng -o deps.png
Вот что получилось:
cargo-watch
Команда watch позволяет автоматически собирать код, при изменениях в файлах. Подобный подход очень популярен в мире Node (Grunt, Gulp). Устанавливаем:
cargo install cargo-watch
Использовать так же просто:
cargo watch
По сути команда запускает бесконечный цикл с командами build и test, просто наблюдающий за изменениями в файлах.
Кстати, по всем командам можно получить справку через команду help, например:
cargo help watch Usage: cargo-watch [watch] [options] cargo watch [options] cargo-watch [watch] [<args>...] cargo watch [<args>...] Options: -h, --help Display this message `cargo watch` can take one or more arguments to pass to cargo. For example, `cargo watch "test ex_ --release"` will run `cargo test ex_ --release` If no arguments are provided, then cargo will run `build` and `test`
cargo-count
Команда count позволяет посчитать полезную статистику о вашем коде. Устанавливаем:
cargo install cargo-count
Просто наберите:
cargo count
И получите следующий отчёт (меня он приводит в полный восторг!):
Gathering information... Language Files Lines Blanks Comments Code -------- ----- ----- ------ -------- ---- TOML 1 19 1 0 18 Python 1 63 11 5 47 Rust 7 824 89 17 718 HTML 41218 5218543 1016734 239837 3961972 CSS 5 907 130 38 739 C 37 19303 2665 1964 14673 C Header 25 3970 1049 1012 1907 C++ Header 1 9 1 3 5 JavaScript 788 4024 591 155 3278 -------- ----- ----- ------ -------- ---- Totals: 42083 5247662 1021271 243031 3983357
rustfmt
Команда fmt позволяет автоматически форматировать код. Близкий аналог есть в Go. Устанавливаем:
cargo install rustfmt
Команда довольно долго компилируется, и пока не очень стабильна, но уже очень полезна.
Наберите:
cargo fmt
Помогает отформатировать код и показывает все не сделанные TODO )
Итог
Теперь вы можете значительно повысить удобство и без того прекрасного cargo. Перспектива радует.
P.S. К слову, все команды — полноценные и автономные программы на Rust, которые компилируются и складываются в ~/.cargo/bin/:
ls -lah ~/.cargo/bin/ итого 33M drwxr-xr-x 1 denis_000 denis_000 0 янв 15 12:17 . drwxr-xr-x 1 denis_000 denis_000 0 дек 15 16:37 .. -rwxr-xr-x 1 denis_000 denis_000 3,5M янв 15 12:13 cargo-add.exe -rwxr-xr-x 1 denis_000 denis_000 2,2M янв 15 12:04 cargo-check.exe -rwxr-xr-x 1 denis_000 denis_000 3,3M дек 15 16:44 cargo-count.exe -rwxr-xr-x 1 denis_000 denis_000 2,4M янв 15 12:03 cargo-fmt.exe -rwxr-xr-x 1 denis_000 denis_000 3,1M янв 15 12:17 cargo-graph.exe -rwxr-xr-x 1 denis_000 denis_000 3,2M янв 15 12:13 cargo-list.exe -rwxr-xr-x 1 denis_000 denis_000 3,2M янв 15 12:12 cargo-rm.exe -rwxr-xr-x 1 denis_000 denis_000 3,3M дек 15 16:37 cargo-watch.exe -rwxr-xr-x 1 denis_000 denis_000 8,4M янв 15 12:03 rustfmt.exe
ссылка на оригинал статьи http://habrahabr.ru/post/275157/
Добавить комментарий