nsi-trait 0.3.0

Core traits and types for the Nodal Scene Interface – ɴsɪ.
Documentation
# nsi-trait

Core traits and types for the [Nodal Scene Interface](https://nsi.readthedocs.io/) (ɴsɪ).

This crate defines the renderer-agnostic abstractions used by the rest of
the [`nsi`](https://crates.io/crates/nsi) ecosystem:

- `Type``NSIType_t` mirror (`F32`, `F64`, `I32`, `I64`, `Color`,
  `Point`, `Vector`, `Normal`, `MatrixF32`, `MatrixF64`, …) with values
  binary-compatible with the C header.
- `FfiParam` — a `repr(C)` parameter struct, layout-compatible with
  `NSIParam_t`.
- `Flags``NSIParam_t.flags` bits.
- `Action` / `StoppingStatus` / `ErrorLevel` — render-control enums.
- `Parameter` trait — what a single typed parameter looks like.
- `Nsi` trait — the renderer surface (`create`, `delete`, `connect`,
  `set_attribute`, …).
- `NodeType` — every standard ɴsɪ node type, including `mesh`, `curves`,
  `nurbs`, `volume`, the cameras, `outputdriver`, `outputlayer`, etc.

This crate is `no_std`-friendly except for the optional `ustr` feature,
which switches the `Name` alias to `ustr::Ustr` for cheap interned
handles.

## License

Licensed under either of

- Apache License, Version 2.0
- MIT license
- zlib License

at your option.