arnold-rs 0.1.0

Rust bindings for the Arnold raytracing API
# Rust bindings for the Arnold raytracing API

## Modules Completion
|                                         |                                           |                                              |
|-----------------------------------------|-------------------------------------------|----------------------------------------------|
|<ul><li>[ ] ai_allocate</li></ul>        |<ul><li>[ ] ai_matrix</li></ul>            |<ul><li>[ ] ~~ai_shader_message~~</li></ul>   |
|<ul><li>[ ] ~~ai_api~~</li></ul>         |<ul><li>[ ] ~~ai_matrix_private~~</li></ul>|<ul><li>[ ] ~~ai_shader_parameval~~</li></ul> |
|<ul><li>[x] ai_array</li></ul>           |<ul><li>[ ] ai_metadata</li></ul>          |<ul><li>[ ] ai_shader_radiance</li></ul>      |
|<ul><li>[x] ai_bbox</li></ul>            |<ul><li>[x] ai_msg</li></ul>               |<ul><li>[ ] ~~ai_shader_sample~~</li></ul>    |
|<ul><li>[ ] ~~ai_cameras~~</li></ul>     |<ul><li>[x] ai_node_entry</li></ul>        |<ul><li>[ ] ~~ai_shader_sss~~</li></ul>       |
|<ul><li>[ ] ~~ai_closure~~</li></ul>     |<ul><li>[x] ai_nodes</li></ul>             |<ul><li>[ ] ~~ai_shader_userdef~~</li></ul>   |
|<ul><li>[x] ai_color</li></ul>           |<ul><li>[ ] ~~ai_noise~~</li></ul>         |<ul><li>[ ] ~~ai_shader_util~~</li></ul>      |
|<ul><li>[ ] ai_color_managers</li></ul>  |<ul><li>[ ] ai_operator</li></ul>          |<ul><li>[ ] ~~ai_shader_volume~~</li></ul>    |
|<ul><li>[ ] ~~ai_comparison~~</li></ul>  |<ul><li>[ ] ai_params</li></ul>            |<ul><li>[ ] ~~ai_shaderglobals~~</li></ul>    |
|<ul><li>[x] ai_constants</li></ul>       |<ul><li>[ ] ai_plugins</li></ul>           |<ul><li>[ ] ~~ai_shaders~~</li></ul>          |
|<ul><li>[ ] ~~ai_critsec~~</li></ul>     |<ul><li>[ ] ai_pointcloud</li></ul>        |<ul><li>[ ] ai_stats</li></ul>                |
|<ul><li>[ ] ai_deprecated</li></ul>      |<ul><li>[ ] ai_procedural</li></ul>        |<ul><li>[x] ai_string</li></ul>               |
|<ul><li>[ ] ai_device</li></ul>          |<ul><li>[ ] ai_ray</li></ul>               |<ul><li>[ ] ai_texture</li></ul>              |
|<ul><li>[x] ai_dotass</li></ul>          |<ul><li>[x] ai_render</li></ul>            |<ul><li>[ ] ai_unit_test</li></ul>            |
|<ul><li>[ ] ~~ai_driver_utils~~</li></ul>|<ul><li>[ ] ai_threads</li></ul>           |<ul><li>[ ] ai_universe</li></ul>             |
|<ul><li>[x] ai_drivers</li></ul>         |<ul><li>[ ] ai_sampler</li></ul>           |<ul><li>[x] ai_vector</li></ul>               |
|<ul><li>[ ] ai_enum</li></ul>            |<ul><li>[ ] ~~ai_shader_aovs~~</li></ul>   |<ul><li>[ ] ai_version</li></ul>              |
|<ul><li>[ ] ~~ai_filters~~</li></ul>     |<ul><li>[ ] ~~ai_shader_bsdf~~</li></ul>   |<ul><li>[ ] ai_volume</li></ul>               |
|<ul><li>[ ] ai_license</li></ul>         |<ul><li>[ ] ~~ai_shader_closure~~</li></ul>|                                              |
|<ul><li>[ ] ~~ai_math~~</li></ul>        |<ul><li>[ ] ~~ai_shader_lights~~</li></ul> |                                              |


## Build
### Environment Setup
Before you build and run you need to make sure arnold can be found.
```bash
export ARNOLD_ROOT=/path/to/arnold/root;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ARNOLD_ROOT/bin;
```
### Build
```bash
cargo build
```

### Test
```bash
cargo test string_cmp -- --test-threads=1
```
This will run the test *string_cmp* see [Attention Tests](#Tests) why we need to run them individually.
You can run the following to list the available tests.
```bash
cargo test -- --list
...
ai_render::tests::render_testing: test
ai_string::tests::string_cmp: test
ai_string::tests::string_empty: test
ai_string::tests::string_hash: test
ai_string::tests::string_length: test
```
# Documentation
To build documentation, run:
```cargo rustdoc --lib -- --sort-modules-by-appearance -Z unstable-options```
## !!Attention!!
### WIP
This is an extremely early test to learn rust. Don't expect much.

### Tests
You need to run the tests individually.
Even if we run tests with ```cargo test -- --test-threads=1``` we get panics some times.