nan-default 0.0.1

Derive macro for defaulting structs with floats to NAN
Documentation
# nan-default ![License: MIT]https://img.shields.io/badge/license-MIT-blue [![nan-default on crates.io]https://img.shields.io/crates/v/nan-default]https://crates.io/crates/nan-default [![nan-default on docs.rs]https://docs.rs/nan-default/badge.svg]https://docs.rs/nan-default [![Source Code Repository]https://img.shields.io/badge/Code-On%20GitLab-blue?logo=GitLab]https://gitlab.com/mfairman/nan-default

## NaN Default Derive Macro

A macro which lets you create structs whose floating-point members
(f32, f64) are initialized as `NAN` rather than `0.0` by default.
Struct members which are not floats get `Default::default()`
assignments, and partial defaulting via `..Default::default()` is
also supported.

This can be convenient when using the special NAN state of a
floating point number to designate it as invalid or uninitialized,
rather than wrapping it in an `Option` which takes some extra
space — especially if you have many of them.  Of course, any
operations on such variables need to check for this state just as
they would need to check for the `Some` variant of an `Option`
(albeit without idiomatic if-let statements, mapping, and so on).
Depending on the application, `is_nan()` or `!is_finite()` may be
appropriate functions to perform the check.

## Example

```rust
use nan_default::NanDefault;

#[derive(NanDefault)]
struct Data {
    a: f32,
    b: [f64; 10],
    c: i32,
}

fn basic() {
    let data = Data::default();
    assert!(data.a.is_nan());
    assert!(data.b[9].is_nan());
    assert_eq!(data.c, 0);
}
```