fn main() -> Result<(), Box> { // Set PROTOC environment variable to use vendored protoc let protoc_path = protoc_bin_vendored::protoc_bin_path()?; std::env::set_var("PROTOC", protoc_path); // Compile the protobuf files to OUT_DIR // This generates Rust code from the .proto definitions tonic_build::configure() .build_server(true) // Generate server traits .build_client(true) // Generate client stubs .compile_protos( &[ "proto/remote_write.proto", // Prometheus remote write protocol "proto/query.proto", // PromQL query API "proto/admin.proto", // Admin/health endpoints ], &["proto"], // Include path for proto files )?; // Tell cargo to rerun build.rs if proto files change println!("cargo:rerun-if-changed=proto/remote_write.proto"); println!("cargo:rerun-if-changed=proto/query.proto"); println!("cargo:rerun-if-changed=proto/admin.proto"); Ok(()) }