1*de2e4ac0SBrandon Williams //! A HelloWorld example that uses JSON instead of protobuf as the message serialization format. 2*de2e4ac0SBrandon Williams //! 3*de2e4ac0SBrandon Williams //! Generated code is the output of codegen as defined in the `build_json_codec_service` function 4*de2e4ac0SBrandon Williams //! in the `examples/build.rs` file. As defined there, the generated code assumes that a module 5*de2e4ac0SBrandon Williams //! `crate::common` exists which defines `HelloRequest`, `HelloResponse`, and `JsonCodec`. 6*de2e4ac0SBrandon Williams 7*de2e4ac0SBrandon Williams pub mod common; 8*de2e4ac0SBrandon Williams use common::HelloRequest; 9*de2e4ac0SBrandon Williams 10*de2e4ac0SBrandon Williams pub mod hello_world { 11*de2e4ac0SBrandon Williams include!(concat!(env!("OUT_DIR"), "/json.helloworld.Greeter.rs")); 12*de2e4ac0SBrandon Williams } 13*de2e4ac0SBrandon Williams use hello_world::greeter_client::GreeterClient; 14*de2e4ac0SBrandon Williams 15*de2e4ac0SBrandon Williams #[tokio::main] main() -> Result<(), Box<dyn std::error::Error>>16*de2e4ac0SBrandon Williamsasync fn main() -> Result<(), Box<dyn std::error::Error>> { 17*de2e4ac0SBrandon Williams let mut client = GreeterClient::connect("http://[::1]:50051").await?; 18*de2e4ac0SBrandon Williams 19*de2e4ac0SBrandon Williams let request = tonic::Request::new(HelloRequest { 20*de2e4ac0SBrandon Williams name: "Tonic".into(), 21*de2e4ac0SBrandon Williams }); 22*de2e4ac0SBrandon Williams 23*de2e4ac0SBrandon Williams let response = client.say_hello(request).await?; 24*de2e4ac0SBrandon Williams 25*de2e4ac0SBrandon Williams println!("RESPONSE={:?}", response); 26*de2e4ac0SBrandon Williams 27*de2e4ac0SBrandon Williams Ok(()) 28*de2e4ac0SBrandon Williams } 29