pub struct CodeGenOutput {
pub common: PathBuf,
pub models: Option<PathBuf>,
pub models_subdir: String,
pub server: Option<PathBuf>,
pub client: Option<PathBuf>,
pub generate_resource_clients: bool,
pub python: Option<PathBuf>,
pub node: Option<PathBuf>,
pub node_ts: Option<PathBuf>,
pub wasm: Option<PathBuf>,
pub python_typings_filename: String,
}Expand description
Output directory configuration for code generation.
Only common is required. All other outputs are optional — set to None to skip that
output entirely. For example, a server-only crate can omit client, and a client-only
crate can omit server.
Fields§
§common: PathBufOutput directory for common (shared extractor) code.
models: Option<PathBuf>Parent models directory (e.g. crates/common/src/models).
When Some, the generator writes labels.rs, pyo3_impls.rs, and mod.rs
into a subdirectory named models_subdir
inside this path. The buf proto plugin co-locates the compiled model files
(<pkg>.rs / .serde.rs / .tonic.rs) in that same subdirectory, so the
mod.rs includes them with include!("./<pkg>.rs").
models_subdir: StringName of the generated subdirectory inside models.
Defaults to "_gen".
server: Option<PathBuf>Output directory for server-side handler and route code. Generation is skipped when None.
client: Option<PathBuf>Output directory for HTTP client code. Generation is skipped when None.
generate_resource_clients: boolWhether to also emit ergonomic resource-scoped clients (<service>/resource.rs) alongside
the low-level per-service client and builders.
A scoped client (e.g. CatalogClient bound to a name) captures the resource’s name
components and exposes get/update/delete (+ resource-targeted custom RPCs) returning
the matching builder. Only emitted for resource-scoped services, and only when
client is Some. Defaults to false.
python: Option<PathBuf>Output directory for Python bindings. Generation is skipped when None.
node: Option<PathBuf>Output directory for Node.js NAPI bindings. Generation is skipped when None.
node_ts: Option<PathBuf>Output directory for Node.js TypeScript client. Generation is skipped when None.
wasm: Option<PathBuf>Output directory for WASM/browser #[wasm_bindgen] bindings + .d.ts. Generation is
skipped when None.
Emits a #[wasm_bindgen] wrapper layer over the generated (WASM-transport) clients plus a
client.d.ts for JS/TS consumers. Request/response values cross the boundary as plain JS
objects via serde-wasm-bindgen, so this pairs with runtime: Buffa (serde-native models)
and transport_type_path = "olai_http_wasm::WasmClient".
python_typings_filename: StringFilename for the generated Python typings stub.
Default: "client.pyi"
Implementations§
Source§impl CodeGenOutput
impl CodeGenOutput
Sourcepub fn models_subdir_path(&self) -> Option<PathBuf>
pub fn models_subdir_path(&self) -> Option<PathBuf>
Absolute path of the generated subdirectory (models/models_subdir), if models is set.
Trait Implementations§
Source§impl Clone for CodeGenOutput
impl Clone for CodeGenOutput
Source§fn clone(&self) -> CodeGenOutput
fn clone(&self) -> CodeGenOutput
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for CodeGenOutput
impl RefUnwindSafe for CodeGenOutput
impl Send for CodeGenOutput
impl Sync for CodeGenOutput
impl Unpin for CodeGenOutput
impl UnsafeUnpin for CodeGenOutput
impl UnwindSafe for CodeGenOutput
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more