Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
rustruct
rustruct
  • Tutorials
    • 1. Install rustruct
    • 2. Define and pack a structure
    • 3. Decode the message
    • 4. Try partial input
    • 5. Inspect an error
    • 1. Decode an IPv4 packet
    • 2. Build an IPv4 packet with UDP
    • 3. Build and decode a DNS query
    • 4. Create a minimal PNG container
    • 5. Create a transparent 1×1 PNG
  • How-to guides
    • How to choose field types
    • How to compute and verify a digest
    • How to model collections and nesting
    • How to model enums and bit fields
    • How to model computed and conditional fields
    • How to model tagged unions
    • How to compile mapping-based schemas
    • How to extend the schema
    • How to use the IPv4 model
    • How to use the DNS model
    • How to build and decode PNG files
    • How to decode and encode MessagePack values
    • How to decode untrusted, deeply-nested MessagePack safely
    • How to benchmark
  • Explanation
    • How schemas work
    • Architecture and execution model
    • Native program reference
    • Extension model
    • Understanding performance
  • API reference
    • Structures
    • Fields and declarations
    • Declarative schema language
    • Low-level schema language
    • Runtime API
    • Extension API
    • Protocol and format API
Back to top

Explanation¶

These pages explain why rustruct behaves as it does and connect the schema model, native execution, extension boundary, and performance trade-offs. Read them for understanding rather than step-by-step instructions.

  • How schemas work
  • Architecture and execution model
  • Native program reference
  • Extension model
  • Understanding performance
Next
How schemas work
Previous
How to benchmark
Copyright © 2026, Dmitry Orlov
Made with Sphinx and @pradyunsg's Furo