From f6f4cd8fcb5dd85e62cf7b10624784f8d4bdd71a Mon Sep 17 00:00:00 2001 From: diogo464 Date: Thu, 12 Feb 2026 16:30:05 +0000 Subject: switch to postcard --- Cargo.toml | 2 +- src/internal.rs | 2 +- src/protocol.rs | 7 ++----- urpc-macro/src/lib.rs | 12 ++++++------ 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 13032d9..92d2614 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,12 +15,12 @@ members = ["urpc-macro"] [dependencies] urpc-macro = { path = "urpc-macro" } -bincode = { version = "2.0.1", features = ["serde"] } bytes = { version = "1.10.1", features = ["serde"] } futures = "0.3.31" serde = { version = "1.0.219", features = ["derive"] } tokio = { version = "1.44.1", features = ["full"] } tokio-util = { version = "0.7.14", features = ["codec"] } +postcard = { version = "1.1.3", features = ["use-std"] } [dev-dependencies] tokio-test = "0.4" diff --git a/src/internal.rs b/src/internal.rs index a3c203a..7085d84 100644 --- a/src/internal.rs +++ b/src/internal.rs @@ -1,2 +1,2 @@ -pub use bincode; +pub use postcard; pub use bytes; diff --git a/src/protocol.rs b/src/protocol.rs index baf886b..d789939 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -76,8 +76,7 @@ impl Encoder for RpcMessageCodec { item: RpcMessage, dst: &mut bytes::BytesMut, ) -> std::result::Result<(), Self::Error> { - let encoded = bincode::serde::encode_to_vec(&item, bincode::config::standard()) - .map_err(std::io::Error::other)?; + let encoded = postcard::to_stdvec(&item).map_err(std::io::Error::other)?; let encoded = Bytes::from(encoded); self.0.encode(encoded, dst).map_err(std::io::Error::other)?; Ok(()) @@ -95,9 +94,7 @@ impl Decoder for RpcMessageCodec { ) -> std::result::Result, Self::Error> { match self.0.decode(src) { Ok(Some(frame)) => { - let (message, _) = - bincode::serde::decode_from_slice(&frame, bincode::config::standard()) - .map_err(std::io::Error::other)?; + let message = postcard::from_bytes(&frame).map_err(std::io::Error::other)?; Ok(Some(message)) } Ok(None) => Ok(None), diff --git a/urpc-macro/src/lib.rs b/urpc-macro/src/lib.rs index 4facc60..9d5ce0e 100644 --- a/urpc-macro/src/lib.rs +++ b/urpc-macro/src/lib.rs @@ -130,11 +130,11 @@ fn generate_service_into_service_match_arm(service: &Service, method: &Method) - quote::quote! { #method_name => { - let ((#(#arg_idents),*), _) = - urpc::internal::bincode::serde::decode_from_slice(&arguments, urpc::internal::bincode::config::standard()).map_err(std::io::Error::other)?; + let (#(#arg_idents),*) = + urpc::internal::postcard::from_bytes(&arguments).map_err(std::io::Error::other)?; let ctx = Default::default(); let ret = ::#method_ident(&self.0, ctx, #(#arg_idents),*).await; - let value = urpc::internal::bincode::serde::encode_to_vec(&ret, urpc::internal::bincode::config::standard()).map_err(std::io::Error::other)?; + let value = urpc::internal::postcard::to_stdvec(&ret).map_err(std::io::Error::other)?; Ok(From::from(value)) } } @@ -229,7 +229,7 @@ fn generate_service_client_method(service: &Service, method: &Method) -> TokenSt let service = String::from(#service_name); let method = String::from(#method_string); let arguments = (#(#method_arg_idents),*); - let arguments = match urpc::internal::bincode::serde::encode_to_vec(&arguments, urpc::internal::bincode::config::standard()) { + let arguments = match urpc::internal::postcard::to_stdvec(&arguments) { Ok(arguments) => From::from(arguments), Err(err) => return Err(urpc::protocol::RpcError::Transport(std::io::Error::other(err))), }; @@ -237,8 +237,8 @@ fn generate_service_client_method(service: &Service, method: &Method) -> TokenSt Ok(response) => response, Err(err) => return Err(urpc::protocol::RpcError::Transport(err)), }; - match urpc::internal::bincode::serde::decode_from_slice::, _>(&response, urpc::internal::bincode::config::standard()) { - Ok((result, _)) => result.map_err(urpc::protocol::RpcError::Remote), + match urpc::internal::postcard::from_bytes::>(&response) { + Ok(result) => result.map_err(urpc::protocol::RpcError::Remote), Err(err) => Err(urpc::protocol::RpcError::Transport(std::io::Error::other(err))), } } -- cgit