#typed #numbers #num #serde #serde-derive #serialization

typed-num

Typed number in Rust with serde support

2 unstable releases

0.2.0 Mar 22, 2023
0.1.0 Mar 22, 2023

#1885 in Encoding

Download history 69/week @ 2024-11-16 101/week @ 2024-11-23 72/week @ 2024-11-30 126/week @ 2024-12-07 129/week @ 2024-12-14 51/week @ 2024-12-21 16/week @ 2024-12-28 44/week @ 2025-01-04 71/week @ 2025-01-11 49/week @ 2025-01-18 1/week @ 2025-01-25 19/week @ 2025-02-01 116/week @ 2025-02-08 110/week @ 2025-02-15 138/week @ 2025-02-22 68/week @ 2025-03-01

445 downloads per month

WTFPL license

6KB
142 lines

typed-num

Typed number in Rust with serde support.

use typed_num::Num;
use serde_derive::{Serialize, Deserialize};

#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
struct Config {
    version: Num<3>,
    hash: String,
}

const OLD_CONFIG: &str = r#"
version = 2
hash = "OoXQqX+ZRNE7VLmkbhGlj2R1B3n3gAJAaGh9kS0mAv8="
"#;

const NEW_CONFIG: &str = r#"
version = 3
hash = "OoXQqX+ZRNE7VLmkbhGlj2R1B3n3gAJAaGh9kS0mAv8="
"#;

let new_config = Config {
    version: Num,
    hash: "OoXQqX+ZRNE7VLmkbhGlj2R1B3n3gAJAaGh9kS0mAv8=".to_string(),
};

toml::from_str::<Config>(OLD_CONFIG).unwrap_err();
assert_eq!(toml::from_str::<Config>(NEW_CONFIG).unwrap(), new_config);
assert_eq!(toml::to_string_pretty(&new_config).unwrap().trim(), NEW_CONFIG.trim());

Dependencies

~99–320KB