#de #serde #default #cfdi #mexican #cfdi-use

cfdi_use_mx

墨西哥CFDI使用

4个版本 (1个稳定版)

1.0.0 2023年4月13日
0.2.0 2022年12月20日
0.1.1 2022年11月18日
0.1.0 2022年7月26日

#856编码

MIT 许可证

20KB
467

cfdi_use_mx

Crates.io

根据3[^*]和4规格,用于墨西哥CFDI的库。

[^*]: 当前已弃用

使用示例

代码转换

use cfdi_use_mx::*;

fn main() {
    let cfdi_use = v4::CFDIUse::from("G03");
    assert_eq!(cfdi_use, v4::CFDIUse::G03);
}

描述转换

use cfdi_use_mx::*;

fn main() {
   let cfdi_use = v4::CFDIUse::from_description("Pagos");
    assert_eq!(cfdi_use, v4::CFDIUse::CP01);
    assert_eq!("Pagos", v4::CFDIUse::CP01.description());
}

默认值

use cfdi_use_mx::*;

fn main() {
    let cfdi_use = v4::CFDIUse::from("Strange text");
    assert_eq!(cfdi_use, v4::CFDIUse::default());
}

Serde

重要:Serde的支持默认激活。如果您不需要它,请禁用default-features

示例

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,
}

#[test]
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());
}

#[test]
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);
}

依赖项

~110–350KB