svgbobdoc::transform! { /** ```svgbob,[trait_binding] Application and library code .----------. .--------------------. .-----------. | your_isr | | your_timer_handler | | your_task | '----------' '--------------------' '-----------' | | | | ────────────────────────|──────────────────|────────────────|───|────────────────────────── Facade API |------------------+----------------' | | | | v "r3::*" | .-------------------------------. | | struct sync::Mutex | | '-------------------------------' | | ────────────────────────|───────────────────────────────|────────────────────────────────── Core API | .---------+----------------. v | | .--------------. v v | trait Kernel | .----------------------. .---------------------. "r3_core::kernel"+--------------+ | struct Mutex | | struct Hunk | | impl Kernel | '----------------------' '---------------------' '--------------' | | | | | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | | | v v v System type .------------------. .-------------------. .--------------------. interface | trait KernelBase | | trait KernelMutex | | trait KernelStatic | . . . '------------------' '-------------------' '--------------------' | | | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ | | | | | v "r3::kernel::cfg" | | .-------------------. "::attach_static!" | | | impl KernelStatic | | | '-------------------' | | Core API | | Implementation | | ────────────────────────|─────────────────────|──────────────────────────────────────────── | | System type v v implementation .-----------------. .------------------. "(chosen by an" | impl KernelBase | | impl KernelMutex | "application)" '-----------------' '------------------' ``` */ }