# Быстрый старт
Самый быстрый путь к работающему сервису - сгенерировать заготовку через `cargo generate`.
## Заготовка проекта
```bash
cargo install cargo-generate
cargo generate --git https://github.com/powersemmi/ruststream templates/memory --name my-service
cd my-service
```
Для генерации нужен только `cargo generate`. `templates/memory` - стартовый шаблон на in-memory
брокере. Шаблон из адаптации библиотеки брокера разворачивается так же: указывают репозиторий
адаптации и путь к шаблону (например,
`--git https://github.com/powersemmi/ruststream-nats templates/nats`); какие шаблоны есть у
адаптации, сказано в её собственной документации. `cargo generate` создаёт идиоматичный проект из
нескольких файлов:
```
my-service/
├── Cargo.toml
└── src/
├── main.rs # #[ruststream::app] строит сервис и монтирует роутер
├── orders.rs # обработчики как функции #[subscriber] (один публикует ответ)
└── routes.rs # собирает обработчики в Router
```
## Запуск
`#[ruststream::app]` генерирует `main`, поэтому бинарник уже понимает команды фреймворка:
```bash
cargo run -- run # или: ruststream run, если установлен CLI
```
`cargo run -- run` запускает рантайм tokio. Сервис работает, пока вы не нажмёте ++ctrl+c++.
Брокер очереди для запуска не нужен.
## Генерация AsyncAPI-документа
```bash
cargo run -- asyncapi gen
```
Команда печатает AsyncAPI-документ в формате JSON. Флаги вывода (`-o`, `--yaml`) и сам документ
разобраны в [модуле `asyncapi`](https://docs.rs/ruststream/latest/ruststream/asyncapi/index.html).
## Как выглядит точка входа
Точка входа - это функция, которая собирает сервис: подключает брокер и монтирует на нём роутер.
`#[ruststream::app]` превращает её в `main`.
=== "Макросы"
```rust title="src/main.rs"
--8<-- "examples/tutorial/main.rs:main"
```
=== "Вручную"
```rust title="src/main.rs"
--8<-- "examples/manual/tutorial/main.rs:main"
```
## Что дальше
- [Учебник](tutorial.md) разбирает каждую часть сервиса.
- [Подписчики](https://docs.rs/ruststream/latest/ruststream/runtime/index.html#subscribers) описывают все формы обработчиков.
- [CLI](https://docs.rs/ruststream/latest/ruststream/runtime/cli/index.html) управляет сервисом из командной строки.