in dubbo-build/src/prost.rs [327:353]
fn request_response_name(
&self,
proto_path: &str,
compile_well_known_types: bool,
) -> (TokenStream, TokenStream) {
let convert_type = |proto_type: &str, rust_type: &str| -> TokenStream {
if (is_google_type(proto_type) && !compile_well_known_types)
|| rust_type.starts_with("::")
|| NON_PATH_TYPE_ALLOWLIST.iter().any(|t| *t == rust_type)
{
rust_type.parse::<TokenStream>().unwrap()
} else if rust_type.starts_with("crate::") {
syn::parse_str::<syn::Path>(rust_type)
.unwrap()
.to_token_stream()
} else {
syn::parse_str::<syn::Path>(&format!("{}::{}", proto_path, rust_type))
.unwrap()
.to_token_stream()
}
};
let req = convert_type(&self.inner.input_proto_type, &self.inner.input_type);
let resp = convert_type(&self.inner.output_proto_type, &self.inner.output_type);
(req, resp)
}