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 }