rtb-telemetry 0.7.4

Opt-in anonymous usage telemetry with pluggable sinks. Part of the phpboyscout Rust toolkit.
Documentation
[project]
site_name = "rtb-telemetry"
site_description = "Opt-in anonymous usage telemetry with pluggable sinks, salted machine identity, and persisted consent."
site_author = "Matt Cockayne"
site_url = "https://telemetry.rust.phpboyscout.uk"
repo_url = "https://gitlab.com/phpboyscout/rust/telemetry"
copyright = """
Copyright © 2026 Matt Cockayne
"""

[project.theme]
logo = "images/branding/logo_transparent.svg"
favicon = "images/branding/favicon.svg"
language = "en"
features = [
    "content.code.copy",
    "navigation.footer",
    "navigation.indexes",
    "navigation.sections",
    "search.highlight",
    "search.suggest",
    "toc.follow",
]

[[project.nav]]
"Overview" = "index.md"

[[project.nav]]
"Tutorials" = [
    "tutorials/index.md",
    { "Record your first event" = "tutorials/record-your-first-event.md" },
]

[[project.nav]]
"How-to" = [
    "how-to/index.md",
    { "Persist a user's consent decision" = "how-to/persist-a-consent-decision.md" },
    { "Write events to a file" = "how-to/write-events-to-a-file.md" },
    { "Send events to an HTTPS endpoint" = "how-to/send-events-to-an-https-endpoint.md" },
    { "Export to an OTLP collector" = "how-to/export-to-an-otlp-collector.md" },
    { "Write a custom sink" = "how-to/write-a-custom-sink.md" },
    { "Assert on events in tests" = "how-to/assert-on-events-in-tests.md" },
]

[[project.nav]]
"Reference" = [
    "reference/index.md",
    { "TelemetryContext" = "reference/telemetry-context.md" },
    { "Event" = "reference/event.md" },
    { "Sinks" = "reference/sinks.md" },
    { "The consent file" = "reference/consent-file.md" },
    { "Cargo features and requirements" = "reference/cargo-features.md" },
    { "Errors" = "reference/errors.md" },
]

[[project.nav]]
"Explanation" = [
    "explanation/index.md",
    { "Two-level opt-in" = "explanation/two-level-opt-in.md" },
    { "Machine identity" = "explanation/machine-identity.md" },
    { "Where redaction applies" = "explanation/redaction-boundary.md" },
    { "Why FileSink holds a lock" = "explanation/file-sink-line-integrity.md" },
    { "What this does not do" = "explanation/what-this-does-not-do.md" },
]

[[project.nav]]
"About" = [
    { "Branding" = "about/branding.md" },
]

[[project.nav]]
"API reference (docs.rs)" = "https://docs.rs/rtb-telemetry"

[[project.extra.social]]
icon = "fontawesome/brands/gitlab"
link = "https://gitlab.com/phpboyscout/rust/telemetry"

[[project.extra.social]]
icon = "fontawesome/solid/globe"
link = "https://phpboyscout.uk"

[[project.extra.social]]
icon = "fontawesome/brands/github"
link = "https://github.com/phpboyscout"

[[project.extra.social]]
icon = "fontawesome/brands/dev"
link = "https://dev.to/phpboyscout"

[[project.extra.social]]
icon = "fontawesome/brands/instagram"
link = "https://www.instagram.com/matt.cockayne/"

[[project.extra.social]]
icon = "fontawesome/brands/tiktok"
link = "https://www.tiktok.com/@phpboyscout"

[[project.extra.social]]
icon = "fontawesome/brands/youtube"
link = "https://www.youtube.com/@phpboyscout"

[[project.extra.social]]
icon = "fontawesome/brands/linkedin"
link = "https://www.linkedin.com/in/matthewcockayne/"

[[project.extra.social]]
icon = "fontawesome/brands/discord"
link = "https://discord.gg/mQzGbmGyzZ"

[[project.extra.social]]
icon = "fontawesome/solid/book"
link = "https://phpboyscout.uk/topics/rust/"
name = "Rust, and what survived the port — the guide on the blog"