title: How to return a Result containing a serde_json::Value?
body: <p>This is what I have, but I want to avoid using <code>unwrap</code> on my reqwest values:</p>
  
  <pre class="lang-rust prettyprint-override"><code>extern crate base64;
  extern crate reqwest;
  
  use serde_json;
  
  use serde_json::json;
  
  pub fn perform_get(id: String) -&gt; serde_json::value::Value {
      let client = reqwest::Client::builder().build().unwrap();
  
      let url = String::from("SomeURL");
  
      let res = client.get(&amp;url).send().unwrap().text();
  
      let mut v = json!(null);
      match res {
          Ok(n) =&gt; {
              v = serde_json::from_str(&amp;n).unwrap();
          }
          Err(r) =&gt; {
              println!("Something wrong happened {:?}", r);
          }
      }
  
      v
  }
  
  fn main() {
      println!("Hi there! i want the function above to return a result instead of a Serde value so I can handle the error in main!");
  }
  </code></pre>
  
  <p><a href="https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2018&amp;code=extern%20crate%20base64%3B%0Aextern%20crate%20reqwest%3B%0A%0Ause%20serde_json%3B%0A%0A%0Ause%20serde_json%3A%3A%7Bjson%7D%3B%0A%0Apub%20fn%20perform_get(id%3A%20String)%20-%3E%20serde_json%3A%3Avalue%3A%3AValue%20%7B%0A%0A%20%20%20%20let%20client%20%3D%20reqwest%3A%3AClient%3A%3Abuilder()%0A%20%20%20%20%20%20%20%20.build()%0A%20%20%20%20%20%20%20%20.unwrap()%3B%0A%0A%20%20%20%20let%20%20url%20%3D%20String%3A%3Afrom(%22SomeURL%22)%3B%0A%20%0A%20%20%20%20let%20res%20%3D%20client%0A%20%20%20%20%20%20%20%20.get(%26url)%0A%20%20%20%20%20%20%20%20.send()%0A%20%20%20%20%20%20%20%20.unwrap()%0A%20%20%20%20%20%20%20%20.text()%3B%0A%0A%20%20%20%20let%20mut%20v%20%3D%20json!(null)%3B%0A%20%20%20%20match%20res%20%7B%0A%20%20%20%20%20%20%20%20Ok(n)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20v%20%3D%20serde_json%3A%3Afrom_str(%26n).unwrap()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Err(r)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20println!(%22Something%20wrong%20happened%20%7B%3A%3F%7D%22%2C%20r)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20v%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22Hi%20there!%20i%20want%20the%20function%20above%20to%20return%20a%20result%20instead%20of%20a%20Serde%20value%20so%20I%20can%20handle%20the%20error%20in%20main!%22)%3B%0A%20%20%20%20%0A%20%20%20%20%0A%20%20%20%20%0A%7D" rel="nofollow noreferrer">Here is a link to a rust playground example</a></p>