1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! connectrpc-codegen - library for generating ConnectRPC Rust bindings.
//!
//! This crate provides programmatic code generation from compiled proto
//! descriptors: buffa message types + ConnectRPC service traits, extension
//! traits, and typed clients.
//!
//! Most users will not use this crate directly. Use either:
//!
//! - **`protoc-gen-connect-rust`** - protoc/buf plugin binary (generates
//! checked-in service stubs via `buf generate`)
//! - **`connectrpc-build`** - `build.rs` integration (generates unified
//! message types + service stubs into `$OUT_DIR`)
//!
//! # Two generation modes
//!
//! [`codegen::generate_files`] - **unified** output. Buffa message types
//! and ConnectRPC service stubs in one file per proto, with
//! `super::`-relative type paths. Used by `connectrpc-build`.
//!
//! [`codegen::generate_services`] - **service stubs only**. Message types
//! are referenced via absolute paths configured with
//! [`codegen::Options::extern_paths`], so the output compiles standalone
//! against a separately-generated buffa module or crate. Used by the
//! `protoc-gen-connect-rust` plugin.
//!
//! # Library usage
//!
//! ```rust,ignore
//! use connectrpc_codegen::codegen::{generate_services, Options};
//!
//! let options = Options {
//! extern_paths: vec![(".".into(), "crate::proto".into())],
//! ..Options::default()
//! };
//! let files = generate_services(&descriptors, &files_to_generate, &options)?;
//! for f in files {
//! std::fs::write(out_dir.join(&f.name), f.content)?;
//! }
//! ```