Browse Source

chore: config feature flag in lib-dispatch

appflowy 2 years ago
parent
commit
9f60741de0

+ 3 - 3
frontend/rust-lib/lib-dispatch/Cargo.toml

@@ -22,8 +22,8 @@ thread-id = "3.3.0"
 lazy_static = "1.4.0"
 dyn-clone = "1.0"
 derivative = "2.2.0"
-serde_json = {version = "1.0"}
-serde = { version = "1.0", features = ["derive"] }
+serde_json = {version = "1.0", optional = true }
+serde = { version = "1.0", features = ["derive"], optional = true }
 dashmap = "5"
 
 #optional crate
@@ -37,5 +37,5 @@ futures-util = "0.3.15"
 
 [features]
 default = ["use_protobuf"]
-use_serde = ["bincode"]
+use_serde = ["bincode", "serde_json", "serde"]
 use_protobuf= ["protobuf"]

+ 4 - 5
frontend/rust-lib/lib-dispatch/src/errors/errors.rs

@@ -6,7 +6,6 @@ use crate::{
 use bytes::Bytes;
 use dyn_clone::DynClone;
 
-use serde::{Serialize, Serializer};
 use std::fmt;
 use tokio::{sync::mpsc::error::SendError, task::JoinError};
 
@@ -86,11 +85,11 @@ impl From<DispatchError> for EventResponse {
         err.inner_error().as_response()
     }
 }
-
-impl Serialize for DispatchError {
-    fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
+#[cfg(feature = "use_serde")]
+impl serde::Serialize for DispatchError {
+    fn serialize<S>(&self, serializer: S) -> Result<<S as serde::Serializer>::Ok, <S as serde::Serializer>::Error>
     where
-        S: Serializer,
+        S: serde::Serializer,
     {
         serializer.serialize_str(&format!("{}", self))
     }

+ 2 - 1
frontend/rust-lib/lib-dispatch/src/request/payload.rs

@@ -4,7 +4,8 @@ use std::{fmt, fmt::Formatter};
 pub enum PayloadError {}
 
 // TODO: support stream data
-#[derive(Clone, serde::Serialize)]
+#[derive(Clone)]
+#[cfg_attr(feature = "user_serde", derive(serde::Serialize))]
 pub enum Payload {
     None,
     Bytes(Bytes),

+ 4 - 2
frontend/rust-lib/lib-dispatch/src/response/response.rs

@@ -8,7 +8,8 @@ use crate::{
 use derivative::*;
 use std::{convert::TryFrom, fmt, fmt::Formatter};
 
-#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
+#[derive(Clone, Debug, Eq, PartialEq)]
+#[cfg_attr(feature = "user_serde", derive(serde::Serialize))]
 pub enum StatusCode {
     Ok = 0,
     Err = 1,
@@ -16,7 +17,8 @@ pub enum StatusCode {
 }
 
 // serde user guide: https://serde.rs/field-attrs.html
-#[derive(Debug, Clone, serde::Serialize, Derivative)]
+#[derive(Debug, Clone, Derivative)]
+#[cfg_attr(feature = "user_serde", derive(serde::Serialize))]
 pub struct EventResponse {
     #[derivative(Debug = "ignore")]
     pub payload: Payload,