twelve_bit
==========
A Rust library for representing 12-bit unsigned values. This is primarily useful for implementing Chip-8 assemblers and interpreters safely. The type implements bulk of the standard Rust literal semantics and operators, and much of the documentation is adapted from the u16 intrinsic type.
[![](http://meritbadge.herokuapp.com/twelve_bit)](https://crates.io/crates/twelve_bit)
[![Build Status](https://travis-ci.org/martinmroz/12bit.svg?branch=master)](https://travis-ci.org/martinmroz/12bit)
[![Coverage Status](https://coveralls.io/repos/github/martinmroz/12bit/badge.svg?branch=master)](https://coveralls.io/github/martinmroz/12bit?branch=master)
### Usage
Add the following to your `Cargo.toml`:
```toml
[dependencies]
twelve_bit = "0.1"
```
In addition, and this to your crate root:
```rust
#[macro_use]
extern crate twelve_bit;
```
Here is an example demonstrating how to interact with the `U12` data type.
```rust
#[macro_use]
extern crate twelve_bit;
use twelve_bit::u12::*;
fn main() {
assert_eq!(u12![1] + u12![2], u12![3]);
assert_eq!(u12![4095], U12::maximum_value());
assert_eq!(u12![4095].overflowing_add(u12![1]), (u12![0], true));
assert_eq!(u12![4095].overflowing_add(u12![1]), (u12![0], true));
}
```
# Missing Features
* Support for `ShlAssign` and `ShrAssign`.
* Support for bitwise assignment traits.
* Support for `U12::from_str_radix()`.
* Support for `Display`, `UpperHex`, `LowerHex`, `Octal` and `Binary`.
* Support for `Hash`.
* Support for `Step`.
# License
`twelve_bit` is distributed under the terms of the MIT license.
See LICENSE for details.