ruststream 0.7.0-rc.10

Async messaging framework for Rust: broker-agnostic traits, router, codecs, and a conformance harness for broker authors.
Documentation
# Быстрый старт

Самый быстрый путь к работающему сервису - сгенерировать заготовку через `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).

## Как выглядит точка входа

=== "Макросы"

    ```rust title="src/main.rs"
    --8<-- "examples/tutorial/main.rs:main"
    ```

=== "Вручную"

    ```rust title="src/main.rs"
    --8<-- "examples/manual/tutorial/main.rs:main"
    ```

Вы пишете функцию, которая собирает сервис, а `#[ruststream::app]` превращает её в `main`.

## Что дальше

- Разобраться в каждой части по [учебнику]tutorial.md.
- Изучить формы обработчиков в разделе [Подписчики]https://docs.rs/ruststream/latest/ruststream/runtime/index.html#subscribers.
- Управлять сервисом из [CLI]https://docs.rs/ruststream/latest/ruststream/runtime/cli/index.html.