ruststream 0.7.5

Async messaging framework for Rust: broker-agnostic traits, router, codecs, and a conformance harness for broker authors.
Documentation
.wide {
  max-width: 1000px;
  margin: 0 auto;
}

.diagram {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}

.node {
  cursor: pointer;
  outline: none;
}

.node rect {
  fill: var(--rs-surface);
  stroke: var(--rs-border);
  stroke-width: 1.5;
  transition:
    stroke 0.15s,
    fill 0.15s;
}

.node text {
  fill: var(--rs-fg);
  font-family: var(--ifm-font-family-monospace);
  font-size: 15px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  pointer-events: none;
}

.frame rect {
  fill: transparent;
  stroke-dasharray: 6 5;
}

.frame text {
  fill: var(--rs-muted);
  font-size: 12px;
}

.node:hover rect,
.active rect {
  stroke: var(--rs-accent);
}

.active:not(.frame) rect {
  fill: var(--rs-land-accent-soft);
}

.node:focus-visible rect {
  stroke: var(--rs-accent);
  stroke-width: 3;
}

.arrow {
  fill: none;
  stroke: var(--rs-muted);
  stroke-width: 1.5;
}

.arrowHead {
  fill: var(--rs-muted);
}

.dotted {
  fill: none;
  stroke: var(--rs-muted);
  stroke-width: 1.2;
  stroke-dasharray: 2 5;
  stroke-linecap: round;
}

.role {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  align-items: baseline;
  min-height: 4.5em;
  margin-top: 24px;
  padding: 16px 20px;
  border: 1px solid var(--rs-border);
  background: var(--rs-surface);
  line-height: 1.55;
}

.roleName {
  color: var(--rs-land-accent-text);
  font-family: var(--ifm-font-family-monospace);
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.narrow {
  display: none;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: part;
}

.narrow li {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 0 14px 16px;
  border-left: 1px solid var(--rs-border);
  position: relative;
}

.narrow li::before {
  content: '';
  position: absolute;
  left: -4px;
  top: 20px;
  width: 7px;
  height: 7px;
  background: var(--rs-accent);
}

.narrow a.roleName {
  text-decoration: underline;
  text-decoration-color: var(--rs-land-accent-soft);
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}

@media (max-width: 760px) {
  .wide {
    display: none;
  }

  .narrow {
    display: block;
  }
}