4 releases

Uses old Rust 2015

0.1.3 Dec 2, 2018
0.1.2 Nov 30, 2018
0.1.1 Nov 30, 2018
0.1.0 Nov 30, 2018

#58 in #derive-deserialize

Download history 11/week @ 2023-12-14 10/week @ 2023-12-21 3/week @ 2023-12-28 10/week @ 2024-01-04 13/week @ 2024-01-11 6/week @ 2024-01-18 2/week @ 2024-02-01 15/week @ 2024-02-08 25/week @ 2024-02-15 33/week @ 2024-02-22 27/week @ 2024-02-29 36/week @ 2024-03-07 32/week @ 2024-03-14 28/week @ 2024-03-21 26/week @ 2024-03-28

125 downloads per month
Used in 5 crates (4 directly)

MIT license

3KB

from_file Build Status

A simple convenience to deserialize a rust Struct or Enum directly from a file path.

It saves you from having to convert a string into a file-path, attempt to read the contents & then deserialize. It's a wrapper around serde so you can use all of the features that you would normally 👍

Links:

Example

#[derive(Deserialize, FromFile, Debug, PartialEq)]
struct Person {
    name: String,
    age: usize
}

// Now `Person` has a `from_file()` method that will read a file from
// disk and automatically attempt to deserialize it 👌
let p = Person::from_file("test/fixtures/person.json").expect("file -> Person");

println!("hey {}!", p.name);

Full example with imports and error handing

#[macro_use]
extern crate serde_derive;

#[macro_use]
extern crate from_file_derive;
extern crate from_file;

use from_file::FromFile;

#[derive(Deserialize, FromFile, Debug, PartialEq)]
struct Person {
    name: String,
    age: usize
}

fn main() {
    match Person::from_file("test/fixtures/person.json") {
        Ok(p) => println!("Got a Person from a file!"),
        Err(e) => eprintln!("{}", e)
    }
}

lib.rs:

This macro enables derive(FromFile), it should be used alongside from_file

Example

#[macro_use]
extern crate serde_derive;
extern crate serde;

#[macro_use]
extern crate from_file_derive;
extern crate from_file;

use from_file::FromFile;

#[derive(Deserialize, FromFile)]
struct Person {
    name: String
}

fn main() {
    let path = "test/fixtures/person.json";
    let person = Person::from_file(path).expect("deserialize from file");
    assert_eq!(person.name, String::from("Shane"));
}

Dependencies

~2MB
~45K SLoC