serde: Use log framework
[learn-rust.git] / serde / src / main.rs
index 335f836a7b9456ff16e9ade08b57e0f0bb8f27b2..fc88d23c418c5872db2d7df475506038a1644949 100644 (file)
@@ -1,7 +1,10 @@
 use std::fs;
 use std::error::Error;
+
 use serde::{Serialize, Deserialize};
 
+const DB_PATH: &str = "/tmp/contacts.json";
+
 #[derive(Serialize, Deserialize, Debug)]
 enum Social {
     Twitter(String),
@@ -29,13 +32,21 @@ fn build_contacts() -> Contacts {
 fn create_contacts() -> Result<(), Box<dyn Error>> {
     let contacts = build_contacts();
     let serialized = serde_json::to_string(&contacts)?;
-    println!("serialized: {}", serialized);
-    let mut f = fs::File::create("/tmp/contacts.json")?;
+    log::debug!("serialized: {}", &serialized);
+    let mut f = fs::File::create(DB_PATH)?;
     serde_json::to_writer_pretty(&mut f, &contacts)?;
     Ok(())
 }
 
+fn load_contacts() -> Result<Contacts, Box<dyn Error>> {
+    let f = fs::File::open(DB_PATH)?;
+    Ok(serde_json::from_reader(f)?)
+}
+
 fn main() -> Result<(), Box<dyn Error>> {
+    env_logger::init();
     create_contacts()?;
+    let contacts = load_contacts()?;
+    println!("deserialized: {:?}", &contacts);
     Ok(())
 }