ruststream 0.7.0-rc.6

Async messaging framework for Rust: broker-agnostic traits, router, codecs, and a conformance harness for broker authors.
Documentation
site_name: RustStream
site_description: Async messaging framework for Rust - broker-agnostic traits, router, codecs, and a conformance harness for broker authors.
site_url: https://powersemmi.github.io/ruststream/
repo_url: https://github.com/powersemmi/ruststream
repo_name: powersemmi/ruststream
edit_uri: edit/main/docs/
copyright: Apache-2.0

theme:
  name: material
  custom_dir: overrides
  features:
    - navigation.sections
    - navigation.top
    - navigation.tracking
    - navigation.indexes
    - content.code.copy
    - content.code.annotate
    - content.action.edit
    - search.suggest
    - search.highlight
    - toc.follow
  palette:
    - media: "(prefers-color-scheme: light)"
      scheme: default
      primary: deep orange
      accent: deep orange
      toggle:
        icon: material/weather-night
        name: Switch to dark mode
    - media: "(prefers-color-scheme: dark)"
      scheme: slate
      primary: deep orange
      accent: deep orange
      toggle:
        icon: material/weather-sunny
        name: Switch to light mode
  icon:
    repo: fontawesome/brands/github

markdown_extensions:
  - admonition
  - attr_list
  - md_in_html
  # Renders :material-xxx: / :fontawesome-xxx: shortcodes (used on the home page grid) as inline
  # SVG icons. Without it those shortcodes show up as literal text.
  - pymdownx.emoji:
      emoji_index: !!python/name:material.extensions.emoji.twemoji
      emoji_generator: !!python/name:material.extensions.emoji.to_svg
  - toc:
      permalink: true
      # The default slugifier drops every non-ASCII character, so a Russian or Chinese heading
      # gets an empty id and the table of contents links to nothing. This one keeps the script
      # and leaves ASCII headings with exactly the ids they already have.
      slugify: !!python/object/apply:pymdownx.slugs.slugify
        kwds:
          case: lower
  - pymdownx.highlight:
      anchor_linenums: true
  - pymdownx.inlinehilite
  - pymdownx.superfences
  - pymdownx.details
  - pymdownx.snippets:
      base_path: ["."]
      check_paths: true
      dedent_subsections: true
  - pymdownx.tabbed:
      alternate_style: true

hooks:
  - docs/hooks/snippet_titles.py
  - docs/hooks/i18n_banner.py

plugins:
  - search
  # Versioned docs are published with `mike` (see the Docs workflow and the version switcher).
  # Pages that moved keep their old URLs alive; extend the map on any future move. The guides
  # moved to docs.rs, where each feature module documents itself, so every old guide URL in
  # every language lands on the module that took the topic over. `latest` there is the newest
  # stable release, so the sections appear once the 0.7 line is out of its release candidates.
  - redirects:
      redirect_maps:
        guides/templates.md: broker-authors/templates.md
        guides/subscribers.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#subscribers
        guides/publishing.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#publishing
        guides/routing.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#routing
        guides/codecs.md: https://docs.rs/ruststream/latest/ruststream/codec/index.html
        guides/context.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#context-and-state
        guides/headers.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#typed-headers
        guides/lifespan.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#lifecycle
        guides/middleware.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#middleware
        guides/failure-policy.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#failure-policy
        guides/http.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#running-beside-another-server
        guides/transactional-outbox.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#running-beside-another-server
        guides/logging.md: https://docs.rs/ruststream/latest/ruststream/logging/index.html
        guides/metrics.md: https://docs.rs/ruststream/latest/ruststream/metrics/index.html
        guides/opentelemetry.md: https://docs.rs/ruststream/latest/ruststream/otel/index.html
        guides/asyncapi.md: https://docs.rs/ruststream/latest/ruststream/asyncapi/index.html
        guides/testing.md: https://docs.rs/ruststream/latest/ruststream/testing/index.html
        guides/cli.md: https://docs.rs/ruststream/latest/ruststream/runtime/cli/index.html
        ru/guides/subscribers.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#subscribers
        ru/guides/publishing.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#publishing
        ru/guides/routing.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#routing
        ru/guides/codecs.md: https://docs.rs/ruststream/latest/ruststream/codec/index.html
        ru/guides/context.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#context-and-state
        ru/guides/headers.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#typed-headers
        ru/guides/lifespan.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#lifecycle
        ru/guides/middleware.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#middleware
        ru/guides/failure-policy.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#failure-policy
        ru/guides/http.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#running-beside-another-server
        ru/guides/transactional-outbox.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#running-beside-another-server
        ru/guides/logging.md: https://docs.rs/ruststream/latest/ruststream/logging/index.html
        ru/guides/metrics.md: https://docs.rs/ruststream/latest/ruststream/metrics/index.html
        ru/guides/opentelemetry.md: https://docs.rs/ruststream/latest/ruststream/otel/index.html
        ru/guides/asyncapi.md: https://docs.rs/ruststream/latest/ruststream/asyncapi/index.html
        ru/guides/testing.md: https://docs.rs/ruststream/latest/ruststream/testing/index.html
        ru/guides/cli.md: https://docs.rs/ruststream/latest/ruststream/runtime/cli/index.html
        zh/guides/subscribers.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#subscribers
        zh/guides/publishing.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#publishing
        zh/guides/routing.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#routing
        zh/guides/codecs.md: https://docs.rs/ruststream/latest/ruststream/codec/index.html
        zh/guides/context.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#context-and-state
        zh/guides/headers.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#typed-headers
        zh/guides/lifespan.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#lifecycle
        zh/guides/middleware.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#middleware
        zh/guides/failure-policy.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#failure-policy
        zh/guides/http.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#running-beside-another-server
        zh/guides/transactional-outbox.md: https://docs.rs/ruststream/latest/ruststream/runtime/index.html#running-beside-another-server
        zh/guides/logging.md: https://docs.rs/ruststream/latest/ruststream/logging/index.html
        zh/guides/metrics.md: https://docs.rs/ruststream/latest/ruststream/metrics/index.html
        zh/guides/opentelemetry.md: https://docs.rs/ruststream/latest/ruststream/otel/index.html
        zh/guides/asyncapi.md: https://docs.rs/ruststream/latest/ruststream/asyncapi/index.html
        zh/guides/testing.md: https://docs.rs/ruststream/latest/ruststream/testing/index.html
        zh/guides/cli.md: https://docs.rs/ruststream/latest/ruststream/runtime/cli/index.html
  # Each translation is a tree of its own under `docs/<locale>/`, mirroring the English paths.
  # English stays at the docs root: a file outside a locale folder is the default language.
  # The alternative, a `<page>.<locale>.md` suffix beside each original, put a page and its
  # translations in one listing, but that was only worth having while nothing else watched for
  # drift; the parity gate does that now, and the suffix form multiplies every directory by the
  # number of languages.
  #
  # English is normative; a page with no translation yet falls back to the English text inside
  # the localized site rather than disappearing from it, which is what lets translations land
  # page by page.
  - i18n:
      docs_structure: folder
      fallback_to_default: true
      reconfigure_material: true
      reconfigure_search: true
      languages:
        - locale: en
          name: English
          default: true
          build: true
        - locale: ru
          name: Russian
          build: true
          nav_translations:
            Home: Главная
            Getting started: Начало работы
            Brokers: Брокеры
            Benchmarks: Бенчмарки
            Broker authors: Авторам брокеров
            API reference: Справочник API
        - locale: zh
          name: Chinese
          build: true
          nav_translations:
            Home: 首页
            Getting started: 快速开始
            Brokers: Broker
            Benchmarks: 基准测试
            Broker authors: Broker 作者
            API reference: API 参考

# The benchmarks page builds its table in the browser from the results each broker publishes with
# its own site. The script is a no-op on every other page.
extra_javascript:
  - assets/benchmarks.js

extra:
  version:
    provider: mike
  social:
    - icon: fontawesome/brands/github
      link: https://github.com/powersemmi/ruststream

nav:
  - Home: index.md
  - Getting started:
      - getting-started/installation.md
      - getting-started/quickstart.md
      - getting-started/tutorial.md
  - Brokers:
      - brokers/index.md
      - brokers/memory.md
      # Each broker crate is documented on its own site; the nav links straight there.
      - NATS: https://powersemmi.github.io/ruststream-nats/
      - Redis: https://powersemmi.github.io/ruststream-fred/
      - RabbitMQ: https://powersemmi.github.io/ruststream-lapin/
      - Kafka: https://powersemmi.github.io/ruststream-rdkafka/
      - AMQP 1.0: https://powersemmi.github.io/ruststream-amqp/
      - Google Cloud Pub/Sub: https://powersemmi.github.io/ruststream-gcp-pubsub/
      - AWS SQS / SNS: https://powersemmi.github.io/ruststream-sqs-sns/
      - Apache Pulsar: https://powersemmi.github.io/ruststream-pulsar/
      - MQTT 5: https://powersemmi.github.io/ruststream-rumqttc/
      - ZeroMQ: https://powersemmi.github.io/ruststream-zeromq/
      - Stream files / stdio: https://powersemmi.github.io/ruststream-sea-file/
      - AWS Kinesis: https://powersemmi.github.io/ruststream-kinesis/
  - Benchmarks: benchmarks.md
  - Broker authors:
      - broker-authors/index.md
      - broker-authors/example-nats.md
      - broker-authors/conformance.md
      - broker-authors/templates.md
  - API reference: reference.md