Expand description
Pure routing layer: decide which execution path a parsed
ConvertPlan takes, without performing any conversion work.
crate::run used to make these decisions inline, which meant the
media-kind × media-kind dispatch matrix could only be exercised by
actually running conversions. Extracting the decision into
decide keeps run a thin dispatcher and lets tests pin every
cell of the matrix with nothing but a ConvertPlan.
Precedence (first match wins), mirroring the historical inline order:
-ping— header-only inspection, no decode.--probe— structural inspection, no output write.- PDF input — Scene-aware side-channel (
pdf_runner). - 3D-asset input (
mesh3dfeature) — same-class re-encode, 3D→raster render, or a typed pairing error. .icooutput (icofeature) — multi-resolution icon writer.- Everything else — the regular
oxideav-pipelinepath.
The precedence order is observable behaviour: in.pdf out.ico
routes to the PDF side-channel (which then rejects .ico as an
unsupported output class), NOT to the ICO writer, because input
classification outranks output classification.
Enums§
- Route
- One cell of the routing matrix — the execution path
crate::rundispatches to for a given plan.
Functions§
- decide
- Classify a plan into its execution
Route, or return the typed error for unroutable pairings (3D input × non-3D/non-raster output,%dtemplate on a single-document 3D scene). - decide_
with decidewith the caller’s registries: a 3D input paired with any extensionctxhas a still-image encoder for (tiff, gif, qoi, …) routes toRoute::Mesh3dToRasterinstead of the pairing error.