# Rust Bindings for libespeak
Following convention of crates suffixed with `-sys`, the crate is no more than a bottom-level wrapper for the API
exposed by `libespeak`'s header.
## Dependencies
`espeak-sys` requires that you have `libespeak` somewhere on your computer where Rust's linker may find it.
To ensure `libespeak` is installed if you have a Debian-based Linux system, simply run the command
```
sudo apt-get install libespeak-dev
```
in your terminal.
`libespeak` may not be available, or may not be usable with this crate on platforms other than Linux.
## Usage
Just add `espeak-sys` as a dependency in `Cargo.toml` and link to it within your crate:
```toml
[dependencies]
espeak-sys = "0.0.1"
```
```rust
extern crate espeak_sys;
```
Usage of the crate is as simple as using the provided functions as they are defined in `libespeak`'s header file, with a few caveats.
Namely, the `type` field of the `espeak_EVENT` struct is renamed to `event_type`, as the former is a reserved keyword in Rust.
Additionally, due to the lack of a one-to-one correspondence for C's `union` types, the `id` field is represented by a mere `u64`
that the crate's user is expected to mercilessly transmute to the desired type variant.
Since `id`'s type is dependent on the value of `event_type`, it should still be possible to build a safe wrapper upon the struct.
### Finding Help
The function of each of the symbols this crate exposes is best documented in the C header file:
* [espeak API Documentation](http://espeak.sourceforge.net/speak_lib.h)
## License
Copyright © 2015 Chandler Atchley
Distributed under the [MIT License](LICENSE).