From 755bec25799fedaca78a45bcbcb813e85ab0697e Mon Sep 17 00:00:00 2001 From: Frando Date: Mon, 28 Jul 2025 11:26:27 +0200 Subject: [PATCH 1/2] feat: variant feature flag --- Cargo.toml | 1 + src/lib.rs | 10 ++++++---- src/util.rs | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b8118e2..b26b7d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,6 +71,7 @@ quinn_endpoint_setup = ["rpc", "dep:rustls", "dep:rcgen", "dep:anyhow", "dep:fut spans = ["dep:tracing"] stream = ["dep:futures-util"] derive = ["dep:irpc-derive"] +varint-util = ["dep:postcard", "dep:smallvec", "tokio/io-util"] default = ["rpc", "quinn_endpoint_setup", "spans", "stream", "derive"] [[example]] diff --git a/src/lib.rs b/src/lib.rs index f2a7762..06ba70f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -309,11 +309,7 @@ use crate::channel::SendError; #[cfg(test)] mod tests; -#[cfg(feature = "rpc")] -#[cfg_attr(quicrpc_docsrs, doc(cfg(feature = "rpc")))] pub mod util; -#[cfg(not(feature = "rpc"))] -mod util; mod sealed { pub trait Sealed {} @@ -1704,6 +1700,10 @@ pub enum RequestError { #[cfg_attr(quicrpc_docsrs, doc(cfg(feature = "rpc")))] #[error("error opening stream: {0}")] Other(#[from] anyhow::Error), + + #[cfg(not(feature = "rpc"))] + #[error("(Without the rpc feature, requests cannot fail")] + Unreachable, } /// Error type that subsumes all possible errors in this crate, for convenience. @@ -1747,6 +1747,8 @@ impl From for io::Error { RequestError::Connection(e) => e.into(), #[cfg(feature = "rpc")] RequestError::Other(e) => io::Error::other(e), + #[cfg(not(feature = "rpc"))] + RequestError::Unreachable => unreachable!(), } } } diff --git a/src/util.rs b/src/util.rs index 64e7975..06ee325 100644 --- a/src/util.rs +++ b/src/util.rs @@ -174,7 +174,7 @@ mod quinn_setup_utils { #[cfg_attr(quicrpc_docsrs, doc(cfg(feature = "quinn_endpoint_setup")))] pub use quinn_setup_utils::*; -#[cfg(feature = "rpc")] +#[cfg(any(feature = "rpc", feature = "varint-util"))] mod varint_util { use std::{ future::Future, @@ -382,7 +382,8 @@ mod varint_util { } } } -#[cfg(feature = "rpc")] + +#[cfg(any(feature = "rpc", feature = "varint-util"))] pub use varint_util::{AsyncReadVarintExt, AsyncWriteVarintExt, WriteVarintExt}; mod fuse_wrapper { From 417ad94ca8e13b6e2174eb00d8ac9c9d827f0f3a Mon Sep 17 00:00:00 2001 From: Frando Date: Tue, 21 Oct 2025 22:25:48 +0200 Subject: [PATCH 2/2] fix: docsrs feature flags --- src/util.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/util.rs b/src/util.rs index 06ee325..558a24c 100644 --- a/src/util.rs +++ b/src/util.rs @@ -175,6 +175,10 @@ mod quinn_setup_utils { pub use quinn_setup_utils::*; #[cfg(any(feature = "rpc", feature = "varint-util"))] +#[cfg_attr( + quicrpc_docsrs, + doc(cfg(any(feature = "rpc", feature = "varint-util"))) +)] mod varint_util { use std::{ future::Future, @@ -384,6 +388,10 @@ mod varint_util { } #[cfg(any(feature = "rpc", feature = "varint-util"))] +#[cfg_attr( + quicrpc_docsrs, + doc(cfg(any(feature = "rpc", feature = "varint-util"))) +)] pub use varint_util::{AsyncReadVarintExt, AsyncWriteVarintExt, WriteVarintExt}; mod fuse_wrapper {