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 |
#63 in #derive-deserialize
88 downloads per month
Used in 5 crates
(4 directly)
3KB
from_file
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
~46K SLoC