# AnyStruct Crate AnyStruct is a Rust crate that provides traits for converting between JSON and Protocol Buffers (Proto) data structures. Specifically, it offers the following traits: - `IntoJSON`: Converts a `Value` struct from the `prost_types` crate to a `serde_json::Value` struct. - `IntoProto`: Converts a `serde_json::Value` struct to a `Value` struct from the `prost_types` crate. - `IntoJSONStruct`: Converts a `Struct` struct from the `prost_types` crate to a `serde_json::Map` struct. - `IntoProtoStruct`: Converts a `serde_json::Map` struct to a `Struct` struct from the `prost_types` crate. ## Usage To use AnyStruct in your Rust project, add the following line to your `Cargo.toml` file: ```toml [dependencies] anystruct = "0.1.0" ``` Here is an example usage for converting a JSON string to a Proto struct: ```rust use anystruct::{IntoProto, ProtoStruct}; let json_str = r#"{ "name": "John Doe", "age": 42, "is_student": true, "grades": [80, 85, 90], "address": { "street": "123 Main St", "city": "Anytown", "state": "CA" } }"#; let json_value = serde_json::from_str(json_str).unwrap(); let proto_value = json_value.into_proto(); let proto_struct = ProtoStruct { fields: [("my_data".to_string(), proto_value)].iter().cloned().collect() }; ``` And here is an example usage for converting a Proto struct to a JSON string: ```rust use anystruct::{IntoJSON, IntoJSONStruct}; let proto_value = prost_types::Value { kind: Some(prost_types::value::Kind::StructValue(prost_types::Struct { fields: [("name".to_string(), prost_types::Value { kind: Some(prost_types::value::Kind::StringValue("John Doe".to_string())), })].iter().cloned().collect(), })), }; let json_value = proto_value.into_json(); let json_map = json_value.as_object().unwrap().clone(); let json_str = serde_json::to_string_pretty(&json_map).unwrap(); ``` You can also use the `IntoProtoStruct` and `IntoJSONStruct` traits to convert between `Struct` and `serde_json::Map` structs: ```rust let proto_struct = json_map.into_proto_struct(); let json_map2 = proto_struct.into_json_struct(); ```