# `Quiddity.Native`
[🔗](https://github.com/d-led/ex.quiddity/blob/main/lib/quiddity/native.ex#L1)

The Rust engine: `quiddity` for what a part's features are, `haecceity` for
where its surfaces are.

Every answer here is either a flat binary — points, normals, face ids, depths,
triangle indices — or a JSON string. That is deliberate. A 64 × 64 frame is
4 096 points, and building it as nested Erlang terms one at a time in Rust
costs more than the ray casting that found them; quiddity's own recognition
document is already JSON, and `quiddity serve` speaks JSON, so one
representation means nothing is modelled twice.

A NIF is a library the BEAM loads into itself, so its absence is a raised
`ErlangError` rather than a returned error: `loaded?/0` is the question a
caller asks once.

# `available`

True, from the native side — the only way to know it is loaded.

# `loaded?`

```elixir
@spec loaded?() :: boolean()
```

Whether this VM built and loaded the engine.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
