#write #read #serde-derive #read-write #traits #type #serialize-deserialize

macro derive_from_as

Traits to Read and write types that implement serde Serialize and deserialize to files

3 unstable releases

0.2.0 Apr 6, 2023
0.1.1 Dec 22, 2021
0.1.0 Dec 13, 2020

#70 in #serde-derive

Download history 379/week @ 2024-07-26 556/week @ 2024-08-02 667/week @ 2024-08-09 509/week @ 2024-08-16 458/week @ 2024-08-23 394/week @ 2024-08-30 669/week @ 2024-09-06 317/week @ 2024-09-13 398/week @ 2024-09-20 372/week @ 2024-09-27 298/week @ 2024-10-04 269/week @ 2024-10-11 283/week @ 2024-10-18 111/week @ 2024-10-25 236/week @ 2024-11-01 100/week @ 2024-11-08

756 downloads per month
Used in from_as

MIT license

16KB
249 lines

Derive macros for the from_as crate

This crate is meant to be used as part of the from_as crate and may work as intended by itself.

Please use https://crates.io/crates/from_as

from_as

Rust derive macros for reading and writing files for types that implement serde. The derive macros implement the from_as_file traits.

The from_as_file crate provides two traits: FromFile and AsFile. FromFile is used for getting types from a file. AsFile is used for writing a types to a file.

The derive_from_as crate provides derive macros for these traits with the same names.

Currently, the only files types that can be used are json, yaml, and toml.

Example

    #[macro_use]
    extern crate serde_derive;
    use std::io::{Read, Write};
    use std::convert::TryFrom;
    use from_as::*;

    #[derive(Debug, Deserialize, Serialize, AsFile, FromFile)]
    struct Attribute {
        name: String,
    }
    
    fn main() {
        let attr = Attribute { 
            name: "attr_name".into()
        };
        
        // Write to the example directory.
        attr.as_file("./examples/attr.json").unwrap();
        
        let attr = Attribute::from_file("./examples/attr.json").unwrap();
        println!("{:#?}", attr);
        
        // For writing a prettified version.
        attr.as_file_pretty("./examples/attr.json").uwnrap();
    }

Dependencies

~2.4–3.5MB
~72K SLoC