fn main() -> Result<(), Box> { // NOTE: Tonic 0.14+ uses tonic_prost_build instead of tonic_build let config = tonic_prost_build::configure(); config .clone() .build_server(true) .build_client(true) .compile_well_known_types(true) .extern_path(".google.protobuf", "::prost_types") .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]") // Suppress warnings in generated code .server_mod_attribute(".", "#[allow(unused_qualifications)]") .client_mod_attribute(".", "#[allow(unused_qualifications)]") .compile_protos(&["../../proto/ml_training.proto"], &["../../proto"])?; // Compile fat-client trading proto for BacktestingService (client only -- for validation pipeline) config .build_server(false) .build_client(true) .compile_well_known_types(true) .extern_path(".google.protobuf", "::prost_types") .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]") .server_mod_attribute(".", "#[allow(unused_qualifications)]") .client_mod_attribute(".", "#[allow(unused_qualifications)]") .compile_protos( &["../../proto/fxt_trading.proto"], &["../../proto"], )?; println!("cargo:rerun-if-changed=../../proto/ml_training.proto"); println!("cargo:rerun-if-changed=../../proto/fxt_trading.proto"); Ok(()) }