cfdi_use_mx 2.0.0

Mexican CFDI use
Documentation
# cfdi_use_mx
[![Crates.io](https://shields.io/crates/v/cfdi_use_mx.svg)](https://crates.io/crates/cfdi_use_mx)

Bliblioteca para el uso de CFDI en México, según la especificación v4.

## Ejemplo de uso

Conversión por código

```rust
use cfdi_use_mx::*;

let cfdi_use = v4::CFDIUse::from("G03");
assert_eq!(cfdi_use, v4::CFDIUse::G03);

```

Conversión por descripción

```rust
use cfdi_use_mx::*;

let cfdi_use = v4::CFDIUse::from_description("Pagos");
assert_eq!(cfdi_use, v4::CFDIUse::CP01);
assert_eq!("Pagos", v4::CFDIUse::CP01.description());
```

Valor por default

```rust
use cfdi_use_mx::*;

let cfdi_use = v4::CFDIUse::from("Strange text");
assert_eq!(cfdi_use, v4::CFDIUse::default());
```



## Serde

*IMPORTANTE: El soporte de `serde` está activo por default. Si no lo necesita, desactive las [`default-features`](https://doc.rust-lang.org/cargo/reference/features.html#dependency-features)*

### Ejemplo

```rust
use serde::{Deserialize, Serialize};
use serde_json::json;

use cfdi_use_mx::v4::CFDIUse;

#[derive(Serialize, Deserialize, Debug, PartialEq)]
struct Costumer {
    rfc: String,
    cfdi_use: CFDIUse,
}

fn serialize_works() {
    let costumer = Costumer {
        rfc: "RFC11DDDF".to_string(),
        cfdi_use: CFDIUse::D04,
    };

    let result = serde_json::to_string(&costumer);
    assert!(result.is_ok());
    println!("{:?}", result.unwrap());
}


fn deserialize_works() {
    let costumer_json = json!({
        "rfc": "RFC11DDDF",
        "cfdi_use": "D03"
    });

    let costumer = Costumer {
        rfc: "RFC11DDDF".to_string(),
        cfdi_use: CFDIUse::D03,
    };

    let deserialize_costumer = serde_json::from_value::<Costumer>(costumer_json).unwrap();
    assert_eq!(&deserialize_costumer, &costumer);
    println!("{:?}", &deserialize_costumer);
}
```