use std::{fs::read_dir, io::Result, path::PathBuf}; fn main() -> Result<()> { let includes = &[PathBuf::from("src/proto")]; let mut protos = Vec::new(); for include in includes { for file in read_dir(include)? { let file = file?; if file.file_type()?.is_dir() { continue; } let path = file.path(); if path.extension().unwrap() == "proto" { protos.push(path); } } } tonic_build::configure() .type_attribute( "volume.RemoteFile", "#[derive(::serde::Serialize, ::serde::Deserialize)]", ) .type_attribute( "volume.VolumeInfo", "#[derive(::serde::Serialize, ::serde::Deserialize)]", ) .type_attribute( "helyim.HeartbeatResponse", "#[derive(::serde::Serialize, ::serde::Deserialize)]", ) .compile(&protos, includes)?; Ok(()) }