ruststream 0.7.5

Async messaging framework for Rust: broker-agnostic traits, router, codecs, and a conformance harness for broker authors.
Documentation
/* Shared pieces of the landing sections. Colors come from the site's `--rs-*` variables and the
   page's `--rs-land-*` ones (src/pages/index.module.css). */

.section {
  border-top: 1px solid var(--rs-border);
  padding: 96px 48px;
}

.sectionHead {
  max-width: 760px;
  margin: 0 auto 56px;
  text-align: center;
}

.eyebrow {
  display: inline-block;
  margin-bottom: 16px;
  color: var(--rs-land-accent-text);
  font-family: var(--ifm-font-family-monospace);
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.title {
  margin: 0 0 16px;
  font-size: clamp(1.75rem, 3.2vw, 2.6rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.15;
}

.lede {
  margin: 0;
  color: var(--rs-muted);
  font-size: 1.1rem;
  line-height: 1.6;
}

.accentWord {
  white-space: nowrap;
  color: var(--rs-land-accent-text);
  background: var(--rs-land-accent-soft);
  padding: 0 0.12em;
}

.mono {
  font-family: var(--ifm-font-family-monospace);
}

/* Buttons: monospace, uppercase, a filled primary and an outlined secondary. */
.button,
.buttonGhost {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 22px;
  border: 1px solid var(--rs-accent-fill);
  border-radius: 999px;
  font-family: var(--ifm-font-family-monospace);
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
  transition:
    background-color 0.15s,
    color 0.15s,
    border-color 0.15s;
}

.button {
  background: var(--rs-accent-fill);
  color: var(--rs-accent-contrast);
}

.button:hover {
  color: var(--rs-accent-contrast);
  text-decoration: none;
  filter: brightness(1.08);
}

.buttonGhost {
  background: transparent;
  border-color: var(--rs-control-border);
  color: var(--rs-fg);
}

.buttonGhost:hover {
  border-color: var(--rs-fg);
  color: var(--rs-fg);
  text-decoration: none;
}

.button:focus-visible,
.buttonGhost:focus-visible {
  outline: 2px solid var(--rs-accent);
  outline-offset: 3px;
}

.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

/* A window: a bar with three dots and a file name, then the body. */
.window {
  display: flex;
  flex-direction: column;
  min-width: 0;
  border: 1px solid var(--rs-border);
  background: var(--rs-code-bg);
}

.windowBar {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 0 14px;
  border-bottom: 1px solid var(--rs-border);
  color: var(--rs-muted);
  font-family: var(--ifm-font-family-monospace);
  font-size: 0.78rem;
}

.dots {
  display: inline-flex;
  gap: 6px;
  margin-right: 6px;
}

.dots span {
  width: 9px;
  height: 9px;
  border: 1px solid var(--rs-muted);
  border-radius: 50%;
}

.windowTag {
  margin-left: auto;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* Code blocks inside a window lose their own frame: the window is the frame. */
.window :global(.theme-code-block) {
  margin: 0;
  border-radius: 0;
  box-shadow: none;
}

.window pre {
  border-radius: 0;
  font-size: 0.76rem;
  line-height: 1.55;
}

@media (max-width: 996px) {
  .section {
    padding: 72px 24px;
  }

  .sectionHead {
    margin-bottom: 40px;
  }
}

@media (max-width: 600px) {
  .section {
    padding: 56px 16px;
  }
}

/* A code term that links to its page: the accent color and an underline mark it as a link. */
.codeLink {
  text-decoration: underline;
  text-decoration-color: var(--rs-land-accent-soft);
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}

.codeLink code {
  color: var(--rs-land-accent-text);
}

.codeLink:hover,
.codeLink:focus-visible {
  text-decoration-color: var(--rs-land-accent-text);
}