github.com/google/osv-scalibr@v0.4.1/extractor/filesystem/language/rust/cargoauditable/testdata/uses_serde_json/main.rs (about)

     1  // Source Code used to create the uses_json binary.
     2  
     3  /* Cargo.toml
     4  
     5  [package]
     6  name = "uses_json"
     7  version = "0.1.0"
     8  edition = "2021"
     9  
    10  [dependencies]
    11  serde = { version = "1.0", features = ["derive"] }
    12  serde_json = "1.0"
    13  */
    14  
    15  use serde::{Deserialize, Serialize};
    16  use serde_json::Result;
    17  
    18  #[derive(Serialize, Deserialize)]
    19  struct Thingy {
    20      name: String,
    21      id: u32,
    22  }
    23  
    24  fn deserialize(data: &str) -> Result<Thingy> {
    25      Ok(serde_json::from_str(data)?)
    26  }
    27  
    28  fn serialize(p: &Thingy) -> Result<String> {
    29      let j = serde_json::to_string(&p)?;
    30      Ok(j)
    31  }
    32  
    33  fn main() -> Result<()> {
    34      let data = r#"{"name": "foo", "id": 314}"#;
    35      let obj = deserialize(&data)?;
    36  
    37      println!("Thingy '{}' has id {}", obj.name, obj.id);
    38  
    39      println!("{}", serialize(&obj)?);
    40      Ok(())
    41  }