# firefly-rust
Rust SDK for making [Firefly Zero](https://fireflyzero.com/) games.
* [▶️ getting started](https://docs.fireflyzero.com/dev/getting-started/)
* [📄 api docs](https://docs.rs/firefly-rust/latest/firefly_rust/)
* [📦 crates.io](https://crates.io/crates/firefly-rust)
* [🐙 github](https://github.com/firefly-zero/firefly-rust)
## Installation
```bash
cargo add firefly_rust
```
## Cargo features
* `std`: required if you don't build your project with `#![no_std]`. It will remove from the crate the custom panic handler to avoid conflicts with the standard library.
* `alloc`: required if you want to use [`FileBuf`](https://docs.rs/firefly-rust/latest/firefly_rust/struct.FileBuf.html). Allows the crate to do memory allocations. If you enable `alloc` but not `std`, you have to also provide a global allocator. The easiest way to do so is to activate the `talc` feature (see below).
* `talc`: enable a global [talc](https://github.com/SFBdragon/talc)-powered allocator. The same as the `alloc` feature but you don't have to configure an allocator yourself.
* `sudo`: required if you want to use [`sudo`](https://docs.rs/firefly-rust/latest/firefly_rust/sudo/index.html) module. Enables privileged access to the Firefly Zero device.
* `nalgebra`: can be activated if you use [nalgebra](https://github.com/dimforge/nalgebra). Enables type conversion to and from nalgebra vectors.
## License
MIT License. You can do whatever you want with the SDK, modify it, embed into any apps and games. Have fun!