Skip to main content

Crate doom_fish_utils

Crate doom_fish_utils 

Source
Expand description

§doom-fish-utils

Framework-agnostic FFI utilities shared by the doom-fish family of safe Rust bindings to Apple SDKs.

§Modules

ModulePurpose
completionSync and async completion handlers for FFI callbacks
ffi_stringOwned-string helpers around heap-allocated C strings
four_char_codeFourCharCode wrapper (used by pixel formats, OSType codes, etc.)
panic_safeCatches panics inside extern "C" callbacks so they don’t unwind across the FFI boundary
streamExecutor-agnostic bounded async streams (waker + VecDeque + lossy oldest-drop policy)

§Design tenets

  • Executor-agnostic. No tokio / async-std / smol dependencies; works anywhere std::future::Future works.
  • Defence in depth. The async completion path uses an AtomicBool consumed flag to prevent double-fire UAF in the face of misbehaving Swift callbacks.
  • Panic-safe. extern "C" callbacks pass through panic_safe wrappers so an unexpected Rust panic logs and returns rather than unwinding into Swift / C code.

§Stability

This crate is the foundation of every doom-fish Apple-SDK binding crate. Breaking changes ship as major version bumps; minor versions add modules or non-breaking helpers.

Re-exports§

pub use four_char_code::FourCharCode;

Modules§

completion
Synchronous completion utilities for async FFI callbacks
ffi_string
FFI string utilities
four_char_code
Minimal FourCharCode implementation for pixel formats and color conversions
panic_safe
Panic-safety helpers for the C ABI boundary.
stream
Executor-agnostic bounded async streams for FFI callbacks.