diff --git a/CHANGELOG.md b/CHANGELOG.md index 2522b29..29101e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,46 @@ increment the patch version. ## [Unreleased] +## [0.4.2] - 2026-05-07 + +### Added + +- **`connectrpc::axum::serve_tls`** ([#80]). Companion to `serve` that + hands off to the standalone `Server` for the TLS path — wrapping axum + with `tokio_rustls::TlsAcceptor` directly hangs on h2 ALPN + negotiation. Comes with an `examples/mtls-identity` example showing + client-cert extraction in a handler. + +### Fixed + +- **`connectrpc`: `server` feature now enables `tokio/macros`** ([#80]). + The accept loop in `Server::serve` and the new `axum::serve_tls` both + use `tokio::select!`, but the `server` feature only enabled + `tokio/net`. Crates depending on `connectrpc = { features = ["server"] + }` only compiled when something else in the dependency closure enabled + `tokio/macros` for them. Our conformance suite and examples both have + `tokio = { features = ["macros", …] }` in dev-deps, which kept the gap + hidden in CI. + +- **`connectrpc-build`: generated `mod.rs` `#[allow(...)]` is now sourced + from `buffa_codegen::ALLOW_LINTS`.** The hardcoded list had drifted + behind buffa's: it was missing `clippy::uninlined_format_args` (which + buffa enum JSON deserialize errors trip), `clippy::doc_lazy_continuation`, + and `clippy::module_inception`. The `pub mod ` tree wraps buffa's + per-proto split output (Owned/View/Oneof/Ext/PackageMod) plus our own + `__connect.rs` companions, and the per-proto Owned content has no + `#[allow(...)]` of its own — buffa scopes `package_mod_allow_attr()` to + `__buffa` and `protoc-gen-buffa-packaging` covers the rest with an + inner `#![allow(...)]` that has no analogue in `connectrpc-build`'s + outer-mod layout. Sourcing from `ALLOW_LINTS` (chained with the + `connectrpc-build`-specific `impl_trait_redundant_captures`) keeps the + two from drifting again. Bumps the `buffa-codegen` dependency floor to + `0.5.1`, where `unused_qualifications` landed in `ALLOW_LINTS`. The + checked-in conformance/example/bench output was regenerated against the + buffa 0.5.2 toolchain (`Self::` in oneof serde, inlined format args in + enum serde) — those are codegen *output* changes, not API changes, and + don't affect the floor. + ## [0.4.1] - 2026-05-07 ### Fixed @@ -217,6 +257,7 @@ rebuilds `OUT_DIR` automatically. `build.rs` context (e.g. from a Bazel genrule or standalone host tool). Default remains `true`. +[#80]: https://github.com/anthropics/connect-rust/pull/80 [#7]: https://github.com/anthropics/connect-rust/issues/7 [#34]: https://github.com/anthropics/connect-rust/issues/34 [#50]: https://github.com/anthropics/connect-rust/issues/50 diff --git a/Cargo.toml b/Cargo.toml index febc8dd..2c3bde2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,10 +28,16 @@ tokio-util = "0.7" futures = "0.3" pin-project = "1" -# Protobuf +# Protobuf. +# `buffa-codegen >= 0.5.1` floor: connectrpc-build sources the generated +# `mod.rs` `#[allow(...)]` list from `buffa_codegen::ALLOW_LINTS`, which +# grew `unused_qualifications` in 0.5.1. (The conformance/example regen +# is run against buffa 0.5.2 — Self:: in oneof serde, inlined format +# args in enum serde — but those are codegen *output* changes, not API +# changes, and don't affect this constraint.) buffa = { version = "0.5", features = ["json"] } buffa-types = { version = "0.5", features = ["json"] } -buffa-codegen = { version = "0.5" } +buffa-codegen = { version = "0.5.1" } # Serialization serde = { version = "1", features = ["derive"] } diff --git a/benches/rpc/src/generated/buffa/anthropic.connectrpc.filter.v1.mod.rs b/benches/rpc/src/generated/buffa/anthropic.connectrpc.filter.v1.mod.rs index 305b0c0..a6b51c9 100644 --- a/benches/rpc/src/generated/buffa/anthropic.connectrpc.filter.v1.mod.rs +++ b/benches/rpc/src/generated/buffa/anthropic.connectrpc.filter.v1.mod.rs @@ -5,6 +5,7 @@ include!("filter.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/benches/rpc/src/generated/buffa/bench.noutf8.v1.mod.rs b/benches/rpc/src/generated/buffa/bench.noutf8.v1.mod.rs index ee579ff..7e9577e 100644 --- a/benches/rpc/src/generated/buffa/bench.noutf8.v1.mod.rs +++ b/benches/rpc/src/generated/buffa/bench.noutf8.v1.mod.rs @@ -5,6 +5,7 @@ include!("bench_noutf8.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/benches/rpc/src/generated/buffa/bench.rs b/benches/rpc/src/generated/buffa/bench.rs index d6d90db..22ece7e 100644 --- a/benches/rpc/src/generated/buffa/bench.rs +++ b/benches/rpc/src/generated/buffa/bench.rs @@ -51,13 +51,13 @@ impl<'de> ::serde::Deserialize<'de> for Status { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -68,13 +68,13 @@ impl<'de> ::serde::Deserialize<'de> for Status { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -2467,13 +2467,13 @@ pub mod log_record { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -2484,13 +2484,13 @@ pub mod log_record { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } diff --git a/benches/rpc/src/generated/buffa/bench.v1.mod.rs b/benches/rpc/src/generated/buffa/bench.v1.mod.rs index 0cbf439..163d1bc 100644 --- a/benches/rpc/src/generated/buffa/bench.v1.mod.rs +++ b/benches/rpc/src/generated/buffa/bench.v1.mod.rs @@ -6,6 +6,7 @@ include!("echo_bloat.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/benches/rpc/src/generated/buffa/bench_noutf8.rs b/benches/rpc/src/generated/buffa/bench_noutf8.rs index eb9105c..24f780d 100644 --- a/benches/rpc/src/generated/buffa/bench_noutf8.rs +++ b/benches/rpc/src/generated/buffa/bench_noutf8.rs @@ -665,13 +665,13 @@ pub mod log_record { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -682,13 +682,13 @@ pub mod log_record { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } diff --git a/benches/rpc/src/generated/buffa/fortune.v1.mod.rs b/benches/rpc/src/generated/buffa/fortune.v1.mod.rs index ed0d2ad..5ca8c7b 100644 --- a/benches/rpc/src/generated/buffa/fortune.v1.mod.rs +++ b/benches/rpc/src/generated/buffa/fortune.v1.mod.rs @@ -5,6 +5,7 @@ include!("fortune.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/benches/rpc/src/generated/buffa/mod.rs b/benches/rpc/src/generated/buffa/mod.rs index 7ef1818..1549fe0 100644 --- a/benches/rpc/src/generated/buffa/mod.rs +++ b/benches/rpc/src/generated/buffa/mod.rs @@ -1,16 +1,16 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod anthropic { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod filter { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.filter.v1.mod.rs"); @@ -18,28 +18,28 @@ pub mod anthropic { } } } -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod bench { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod noutf8 { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("bench.noutf8.v1.mod.rs"); } } - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("bench.v1.mod.rs"); } } -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod fortune { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("fortune.v1.mod.rs"); diff --git a/benches/rpc/src/generated/connect/mod.rs b/benches/rpc/src/generated/connect/mod.rs index 7ef1818..1549fe0 100644 --- a/benches/rpc/src/generated/connect/mod.rs +++ b/benches/rpc/src/generated/connect/mod.rs @@ -1,16 +1,16 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod anthropic { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod filter { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.filter.v1.mod.rs"); @@ -18,28 +18,28 @@ pub mod anthropic { } } } -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod bench { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod noutf8 { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("bench.noutf8.v1.mod.rs"); } } - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("bench.v1.mod.rs"); } } -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod fortune { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("fortune.v1.mod.rs"); diff --git a/conformance/src/generated/buffa/connectrpc.conformance.v1.client_compat.__oneof.rs b/conformance/src/generated/buffa/connectrpc.conformance.v1.client_compat.__oneof.rs index 9803545..8fc292b 100644 --- a/conformance/src/generated/buffa/connectrpc.conformance.v1.client_compat.__oneof.rs +++ b/conformance/src/generated/buffa/connectrpc.conformance.v1.client_compat.__oneof.rs @@ -34,10 +34,10 @@ pub mod client_compat_request { use serde::ser::SerializeMap; let mut map = s.serialize_map(Some(1))?; match self { - CancelTiming::BeforeCloseSend(v) => { + Self::BeforeCloseSend(v) => { map.serialize_entry("beforeCloseSend", v)?; } - CancelTiming::AfterCloseSendMs(v) => { + Self::AfterCloseSendMs(v) => { struct _W<'a>(&'a u32); impl serde::Serialize for _W<'_> { fn serialize( @@ -49,7 +49,7 @@ pub mod client_compat_request { } map.serialize_entry("afterCloseSendMs", &_W(v))?; } - CancelTiming::AfterNumResponses(v) => { + Self::AfterNumResponses(v) => { struct _W<'a>(&'a u32); impl serde::Serialize for _W<'_> { fn serialize( @@ -115,10 +115,10 @@ pub mod client_compat_response { use serde::ser::SerializeMap; let mut map = s.serialize_map(Some(1))?; match self { - Result::Response(v) => { + Self::Response(v) => { map.serialize_entry("response", v)?; } - Result::Error(v) => { + Self::Error(v) => { map.serialize_entry("error", v)?; } } diff --git a/conformance/src/generated/buffa/connectrpc.conformance.v1.config.rs b/conformance/src/generated/buffa/connectrpc.conformance.v1.config.rs index 0886c45..6789c8b 100644 --- a/conformance/src/generated/buffa/connectrpc.conformance.v1.config.rs +++ b/conformance/src/generated/buffa/connectrpc.conformance.v1.config.rs @@ -51,13 +51,13 @@ impl<'de> ::serde::Deserialize<'de> for HTTPVersion { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -68,13 +68,13 @@ impl<'de> ::serde::Deserialize<'de> for HTTPVersion { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -194,13 +194,13 @@ impl<'de> ::serde::Deserialize<'de> for Protocol { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -211,13 +211,13 @@ impl<'de> ::serde::Deserialize<'de> for Protocol { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -335,13 +335,13 @@ impl<'de> ::serde::Deserialize<'de> for Codec { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -352,13 +352,13 @@ impl<'de> ::serde::Deserialize<'de> for Codec { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -471,13 +471,13 @@ impl<'de> ::serde::Deserialize<'de> for Compression { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -488,13 +488,13 @@ impl<'de> ::serde::Deserialize<'de> for Compression { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -631,13 +631,13 @@ impl<'de> ::serde::Deserialize<'de> for StreamType { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -648,13 +648,13 @@ impl<'de> ::serde::Deserialize<'de> for StreamType { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -806,13 +806,13 @@ impl<'de> ::serde::Deserialize<'de> for Code { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -823,13 +823,13 @@ impl<'de> ::serde::Deserialize<'de> for Code { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } diff --git a/conformance/src/generated/buffa/connectrpc.conformance.v1.mod.rs b/conformance/src/generated/buffa/connectrpc.conformance.v1.mod.rs index ff763e1..c7b2853 100644 --- a/conformance/src/generated/buffa/connectrpc.conformance.v1.mod.rs +++ b/conformance/src/generated/buffa/connectrpc.conformance.v1.mod.rs @@ -9,6 +9,7 @@ include!("connectrpc.conformance.v1.suite.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/conformance/src/generated/buffa/connectrpc.conformance.v1.service.__oneof.rs b/conformance/src/generated/buffa/connectrpc.conformance.v1.service.__oneof.rs index 2492be3..359bdb5 100644 --- a/conformance/src/generated/buffa/connectrpc.conformance.v1.service.__oneof.rs +++ b/conformance/src/generated/buffa/connectrpc.conformance.v1.service.__oneof.rs @@ -28,7 +28,7 @@ pub mod unary_response_definition { use serde::ser::SerializeMap; let mut map = s.serialize_map(Some(1))?; match self { - Response::ResponseData(v) => { + Self::ResponseData(v) => { struct _W<'a>(&'a ::buffa::alloc::vec::Vec); impl serde::Serialize for _W<'_> { fn serialize( @@ -40,7 +40,7 @@ pub mod unary_response_definition { } map.serialize_entry("responseData", &_W(v))?; } - Response::Error(v) => { + Self::Error(v) => { map.serialize_entry("error", v)?; } } @@ -85,10 +85,10 @@ pub mod raw_http_request { use serde::ser::SerializeMap; let mut map = s.serialize_map(Some(1))?; match self { - Body::Unary(v) => { + Self::Unary(v) => { map.serialize_entry("unary", v)?; } - Body::Stream(v) => { + Self::Stream(v) => { map.serialize_entry("stream", v)?; } } @@ -120,7 +120,7 @@ pub mod message_contents { use serde::ser::SerializeMap; let mut map = s.serialize_map(Some(1))?; match self { - Data::Binary(v) => { + Self::Binary(v) => { struct _W<'a>(&'a ::buffa::alloc::vec::Vec); impl serde::Serialize for _W<'_> { fn serialize( @@ -132,10 +132,10 @@ pub mod message_contents { } map.serialize_entry("binary", &_W(v))?; } - Data::Text(v) => { + Self::Text(v) => { map.serialize_entry("text", v)?; } - Data::BinaryMessage(v) => { + Self::BinaryMessage(v) => { map.serialize_entry("binaryMessage", v)?; } } @@ -180,10 +180,10 @@ pub mod raw_http_response { use serde::ser::SerializeMap; let mut map = s.serialize_map(Some(1))?; match self { - Body::Unary(v) => { + Self::Unary(v) => { map.serialize_entry("unary", v)?; } - Body::Stream(v) => { + Self::Stream(v) => { map.serialize_entry("stream", v)?; } } diff --git a/conformance/src/generated/buffa/connectrpc.conformance.v1.suite.rs b/conformance/src/generated/buffa/connectrpc.conformance.v1.suite.rs index 6705e6c..7b2e11a 100644 --- a/conformance/src/generated/buffa/connectrpc.conformance.v1.suite.rs +++ b/conformance/src/generated/buffa/connectrpc.conformance.v1.suite.rs @@ -749,13 +749,13 @@ pub mod test_suite { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -766,13 +766,13 @@ pub mod test_suite { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -897,13 +897,13 @@ pub mod test_suite { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } @@ -914,13 +914,13 @@ pub mod test_suite { let v32 = i32::try_from(v) .map_err(|_| { ::serde::de::Error::custom( - ::buffa::alloc::format!("enum value {} out of i32 range", v), + ::buffa::alloc::format!("enum value {v} out of i32 range"), ) })?; ::from_i32(v32) .ok_or_else(|| { ::serde::de::Error::custom( - ::buffa::alloc::format!("unknown enum value {}", v32), + ::buffa::alloc::format!("unknown enum value {v32}"), ) }) } diff --git a/conformance/src/generated/buffa/mod.rs b/conformance/src/generated/buffa/mod.rs index 070472a..68f69f2 100644 --- a/conformance/src/generated/buffa/mod.rs +++ b/conformance/src/generated/buffa/mod.rs @@ -1,13 +1,13 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod conformance { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("connectrpc.conformance.v1.mod.rs"); diff --git a/conformance/src/generated/connect/mod.rs b/conformance/src/generated/connect/mod.rs index 070472a..68f69f2 100644 --- a/conformance/src/generated/connect/mod.rs +++ b/conformance/src/generated/connect/mod.rs @@ -1,13 +1,13 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod conformance { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("connectrpc.conformance.v1.mod.rs"); diff --git a/connectrpc-build/Cargo.toml b/connectrpc-build/Cargo.toml index 0654a4b..b642696 100644 --- a/connectrpc-build/Cargo.toml +++ b/connectrpc-build/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "connectrpc-build" -version = "0.4.1" +version = "0.4.2" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/connectrpc-build/src/lib.rs b/connectrpc-build/src/lib.rs index e401823..73d0b75 100644 --- a/connectrpc-build/src/lib.rs +++ b/connectrpc-build/src/lib.rs @@ -501,24 +501,30 @@ fn generate_include_file(entries: &[(String, String)], relative: bool) -> String } for (name, child) in &node.children { let ident = buffa_codegen::idents::escape_mod_ident(name); - // `unused_qualifications`: buffa-codegen always references - // sibling types through the canonical `__buffa::view::*` path - // even when a shorter natural-path re-export exists, because - // the re-export can be shadowed by a proto type with the same - // name. The qualification is intentional, not "unused". + // The `pub mod ` tree wraps buffa's per-proto split + // output (Owned/View/Oneof/Ext + the PackageMod stitcher) + // plus our own `__connect.rs` companions. The per-proto + // content files have no `#[allow(...)]` of their own — + // buffa's `package_mod_allow_attr()` is scoped to `__buffa` + // and `protoc-gen-buffa-packaging` covers the rest with an + // inner `#![allow(...)]` that doesn't apply here — so the + // suppression set must be the union of + // `buffa_codegen::ALLOW_LINTS` and the lints connect-rust + // output trips. Sourcing from `ALLOW_LINTS` keeps the two + // in lockstep when buffa adds entries. // // `impl_trait_redundant_captures`: the `use<'a, Self>` precise- // capturing clause on trait method RPITs is required for // edition-2021 consumers (which capture only `'static` by // default) but redundant under edition 2024. Codegen targets // both editions and cannot know the consumer's at write time. - writeln!( - out, - "{indent}#[allow(dead_code, non_camel_case_types, unused_imports, \ - unused_qualifications, impl_trait_redundant_captures, \ - clippy::derivable_impls, clippy::match_single_binding)]" - ) - .unwrap(); + let allow_lints = buffa_codegen::ALLOW_LINTS + .iter() + .copied() + .chain(["impl_trait_redundant_captures"]) + .collect::>() + .join(", "); + writeln!(out, "{indent}#[allow({allow_lints})]").unwrap(); writeln!(out, "{indent}pub mod {ident} {{").unwrap(); writeln!(out, "{indent} use super::*;").unwrap(); emit(out, child, depth + 1, relative); diff --git a/connectrpc-codegen/Cargo.toml b/connectrpc-codegen/Cargo.toml index 509f1f3..0c445f3 100644 --- a/connectrpc-codegen/Cargo.toml +++ b/connectrpc-codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "connectrpc-codegen" -version = "0.4.1" +version = "0.4.2" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/connectrpc/Cargo.toml b/connectrpc/Cargo.toml index c084756..4c687a4 100644 --- a/connectrpc/Cargo.toml +++ b/connectrpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "connectrpc" -version = "0.4.1" +version = "0.4.2" edition.workspace = true rust-version.workspace = true license.workspace = true diff --git a/examples/bazel/Cargo.toml b/examples/bazel/Cargo.toml index 8f8ab69..0ce2c1c 100644 --- a/examples/bazel/Cargo.toml +++ b/examples/bazel/Cargo.toml @@ -16,8 +16,8 @@ publish = false path = "stub.rs" [dependencies] -buffa = { version = "0.5.1", features = ["json"] } -connectrpc = { version = "0.4.1", default-features = false, features = ["server", "client"] } +buffa = { version = "0.5.2", features = ["json"] } +connectrpc = { version = "0.4.2", default-features = false, features = ["server", "client"] } futures = "0.3" http-body = "1" serde = { version = "1", features = ["derive"] } diff --git a/examples/eliza/src/generated/buffa/connectrpc.eliza.v1.mod.rs b/examples/eliza/src/generated/buffa/connectrpc.eliza.v1.mod.rs index 40f162e..cf387cb 100644 --- a/examples/eliza/src/generated/buffa/connectrpc.eliza.v1.mod.rs +++ b/examples/eliza/src/generated/buffa/connectrpc.eliza.v1.mod.rs @@ -5,6 +5,7 @@ include!("connectrpc.eliza.v1.eliza.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/examples/eliza/src/generated/buffa/mod.rs b/examples/eliza/src/generated/buffa/mod.rs index 04308fb..9f8c1b8 100644 --- a/examples/eliza/src/generated/buffa/mod.rs +++ b/examples/eliza/src/generated/buffa/mod.rs @@ -1,13 +1,13 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod eliza { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("connectrpc.eliza.v1.mod.rs"); diff --git a/examples/eliza/src/generated/connect/mod.rs b/examples/eliza/src/generated/connect/mod.rs index 04308fb..9f8c1b8 100644 --- a/examples/eliza/src/generated/connect/mod.rs +++ b/examples/eliza/src/generated/connect/mod.rs @@ -1,13 +1,13 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod eliza { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("connectrpc.eliza.v1.mod.rs"); diff --git a/examples/multiservice/src/generated/buffa/anthropic.connectrpc.greet.v1.mod.rs b/examples/multiservice/src/generated/buffa/anthropic.connectrpc.greet.v1.mod.rs index 4c0d654..ab4b7b2 100644 --- a/examples/multiservice/src/generated/buffa/anthropic.connectrpc.greet.v1.mod.rs +++ b/examples/multiservice/src/generated/buffa/anthropic.connectrpc.greet.v1.mod.rs @@ -5,6 +5,7 @@ include!("anthropic.connectrpc.greet.v1.greet.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/examples/multiservice/src/generated/buffa/anthropic.connectrpc.math.v1.mod.rs b/examples/multiservice/src/generated/buffa/anthropic.connectrpc.math.v1.mod.rs index 88c8a8e..abcb2ae 100644 --- a/examples/multiservice/src/generated/buffa/anthropic.connectrpc.math.v1.mod.rs +++ b/examples/multiservice/src/generated/buffa/anthropic.connectrpc.math.v1.mod.rs @@ -5,6 +5,7 @@ include!("anthropic.connectrpc.math.v1.math.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/examples/multiservice/src/generated/buffa/anthropic.connectrpc.wkt.v1.mod.rs b/examples/multiservice/src/generated/buffa/anthropic.connectrpc.wkt.v1.mod.rs index cf0a5cc..4c5a6b8 100644 --- a/examples/multiservice/src/generated/buffa/anthropic.connectrpc.wkt.v1.mod.rs +++ b/examples/multiservice/src/generated/buffa/anthropic.connectrpc.wkt.v1.mod.rs @@ -5,6 +5,7 @@ include!("anthropic.connectrpc.wkt.v1.wkt.rs"); non_camel_case_types, dead_code, unused_imports, + unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, diff --git a/examples/multiservice/src/generated/buffa/mod.rs b/examples/multiservice/src/generated/buffa/mod.rs index 81e2433..fb305b1 100644 --- a/examples/multiservice/src/generated/buffa/mod.rs +++ b/examples/multiservice/src/generated/buffa/mod.rs @@ -1,34 +1,34 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod anthropic { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod greet { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.greet.v1.mod.rs"); } } - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod math { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.math.v1.mod.rs"); } } - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod wkt { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.wkt.v1.mod.rs"); diff --git a/examples/multiservice/src/generated/connect/mod.rs b/examples/multiservice/src/generated/connect/mod.rs index 81e2433..fb305b1 100644 --- a/examples/multiservice/src/generated/connect/mod.rs +++ b/examples/multiservice/src/generated/connect/mod.rs @@ -1,34 +1,34 @@ // @generated by buffa-codegen. DO NOT EDIT. -#![allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#![allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] -#[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] +#[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod anthropic { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod connectrpc { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod greet { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.greet.v1.mod.rs"); } } - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod math { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.math.v1.mod.rs"); } } - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod wkt { use super::*; - #[allow(non_camel_case_types, dead_code, unused_imports, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] + #[allow(non_camel_case_types, dead_code, unused_imports, unused_qualifications, clippy::derivable_impls, clippy::match_single_binding, clippy::uninlined_format_args, clippy::doc_lazy_continuation, clippy::module_inception)] pub mod v1 { use super::*; include!("anthropic.connectrpc.wkt.v1.mod.rs");