ruststream 0.7.5

Async messaging framework for Rust: broker-agnostic traits, router, codecs, and a conformance harness for broker authors.
Documentation
/* Fonts are bundled with the site, so a page renders the same where Google Fonts is unreachable.
   Each face ships per-subset files behind `unicode-range`: a reader downloads only the scripts a
   page uses. Chinese text falls back to the system's CJK faces. */
@import '@fontsource/roboto/400.css';
@import '@fontsource/roboto/400-italic.css';
@import '@fontsource/roboto/500.css';
@import '@fontsource/roboto/700.css';
@import '@fontsource/roboto-mono/400.css';
@import '@fontsource/roboto-mono/700.css';

/* The palette every custom component reads. Nothing outside these blocks names a color. Text
   pairs keep at least 4.5:1 against the backgrounds they sit on; control borders and chart marks
   keep 3:1. */
:root,
[data-theme='light'] {
  --rs-bg: #ffffff;
  --rs-fg: #121212;
  --rs-muted: #5c5766;
  /* Links, highlighted words, focus rings and the data marks that stand for RustStream. */
  --rs-accent: #6200ee;
  /* The fill of a primary button, under `--rs-accent-contrast` text. */
  --rs-accent-fill: #6200ee;
  --rs-accent-contrast: #ffffff;
  /* Context7's widget takes one literal color for its launcher, the same in both themes. */
  --rs-brand: #6200ee;
  /* Dividers and frames; a control's outline uses the stronger `--rs-control-border`. */
  --rs-border: #e3dcef;
  --rs-control-border: #857d92;
  /* Elevation: the page, then cards, code blocks and the navigation panels, then what is hovered
     or sits on a card. */
  --rs-code-bg: #f3eefc;
  --rs-surface: #f3eefc;
  --rs-raised: #e9e1f8;
  --rs-shadow: 0 8px 32px rgb(18 18 18 / 18%);

  --ifm-color-primary: #6200ee;
  --ifm-color-primary-dark: #5800d6;
  --ifm-color-primary-darker: #5300ca;
  --ifm-color-primary-darkest: #4500a7;
  --ifm-color-primary-light: #6d07ff;
  --ifm-color-primary-lighter: #7413ff;
  --ifm-color-primary-lightest: #8936ff;
  --docusaurus-highlighted-code-line-bg: rgb(98 0 238 / 10%);
}

[data-theme='dark'] {
  --rs-bg: #0a0a0a;
  --rs-fg: #e1e1e1;
  --rs-muted: #a7a7a7;
  --rs-accent: #bb86fc;
  --rs-accent-fill: #bb86fc;
  --rs-accent-contrast: #0a0a0a;
  --rs-brand: #6200ee;
  --rs-border: #2e2e2e;
  --rs-control-border: #757575;
  --rs-code-bg: #171717;
  --rs-surface: #171717;
  --rs-raised: #1e1e1e;
  --rs-shadow: 0 8px 32px rgb(0 0 0 / 55%);

  --ifm-color-primary: #bb86fc;
  --ifm-color-primary-dark: #a660fb;
  --ifm-color-primary-darker: #9b4efb;
  --ifm-color-primary-darkest: #7b15f9;
  --ifm-color-primary-light: #d0acfd;
  --ifm-color-primary-lighter: #dbbefd;
  --ifm-color-primary-lightest: #e6d4fe;
  --docusaurus-highlighted-code-line-bg: rgb(187 134 252 / 12%);
}

:root {
  --ifm-font-family-base: 'Roboto', system-ui, -apple-system, 'Segoe UI', 'PingFang SC',
    'Hiragino Sans GB', 'Microsoft YaHei', 'Noto Sans CJK SC', sans-serif;
  --ifm-font-family-monospace: 'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, Consolas,
    monospace;
  --ifm-code-font-size: 92%;
  --ifm-background-color: var(--rs-bg);
  --ifm-background-surface-color: var(--rs-surface);
  --ifm-font-color-base: var(--rs-fg);
  --ifm-heading-color: var(--rs-fg);
  --ifm-toc-border-color: var(--rs-border);
  --ifm-code-background: var(--rs-code-bg);
  --ifm-navbar-background-color: var(--rs-surface);
  --ifm-menu-color-background-hover: var(--rs-raised);
  --ifm-menu-color-background-active: var(--rs-raised);
  --ifm-dropdown-hover-background-color: var(--rs-raised);
}

.navbar {
  border-bottom: 1px solid var(--rs-border);
  box-shadow: none;
}

.theme-doc-sidebar-container {
  background: var(--rs-surface);
}

/* Code blocks sit on the palette's code surface in both themes; the Prism themes keep only their
   token colors, each checked for contrast on that surface. The theme writes its own background
   inline, so the override needs the priority. */
.theme-code-block {
  --prism-background-color: var(--rs-code-bg) !important;
}