]> piware.de Git - learn-rust.git/commitdiff
serde: Use error propagation
authorMartin Pitt <martin@piware.de>
Sat, 25 Sep 2021 10:12:45 +0000 (12:12 +0200)
committerMartin Pitt <martin@piware.de>
Sat, 25 Sep 2021 10:12:45 +0000 (12:12 +0200)
serde/src/main.rs

index 1357100b79351126faa8f046e27aa378611ff246..335f836a7b9456ff16e9ade08b57e0f0bb8f27b2 100644 (file)
@@ -1,4 +1,5 @@
 use std::fs;
+use std::error::Error;
 use serde::{Serialize, Deserialize};
 
 #[derive(Serialize, Deserialize, Debug)]
@@ -25,15 +26,16 @@ fn build_contacts() -> Contacts {
     ]
 }
 
-fn create_contacts() {
+fn create_contacts() -> Result<(), Box<dyn Error>> {
     let contacts = build_contacts();
-    // FIXME: Use ? and return Result
-    let serialized = serde_json::to_string(&contacts).unwrap();
+    let serialized = serde_json::to_string(&contacts)?;
     println!("serialized: {}", serialized);
-    let mut f = fs::File::create("/tmp/contacts.json").unwrap_or_else(|e| panic!("Could not create /tmp/contacts.json: {:?}", e));
-    serde_json::to_writer_pretty(&mut f, &contacts).unwrap_or_else(|e| panic!("Could not serialize contacts: {:?}", e));
+    let mut f = fs::File::create("/tmp/contacts.json")?;
+    serde_json::to_writer_pretty(&mut f, &contacts)?;
+    Ok(())
 }
 
-fn main() {
-    create_contacts();
+fn main() -> Result<(), Box<dyn Error>> {
+    create_contacts()?;
+    Ok(())
 }