Behaviour for Elixir-written extractors ("Whiffers").
Callbacks run in BEAM processes outside the NIF — never as Rust plugin
callbacks. Prefer supports?/2 using Whiff.Input descriptors (and optional
limited header probes) rather than loading entire large files.
Summary
Types
@type native_report() :: map()
Callbacks
@callback extract(Whiff.Input.t(), native_report()) :: {:ok, map()} | {:error, Whiff.Error.t()}
@callback id() :: String.t()
@callback supports?(Whiff.Input.t(), native_report()) :: boolean()
@callback version() :: pos_integer()