-
Notifications
You must be signed in to change notification settings - Fork 267
#[rpc] macro in derive has dependencies which are not propagated into consuming projects #481
Description
I am trying to implement the basic example using derive from the README. Since the code snippet only seems to require jsonrpc-core and jsonrpc-derive, I did not include any other dependencies in Cargo.toml:
[dependencies]
jsonrpc-core = "13.0.0"
jsonrpc-derive = "13.0.0"The compiler, however, yields an error that a crate named serde is required too:
error: Could not find `serde` in `dependencies` or `dev-dependencies` in `...\Cargo.toml`!
--> src\main.rs:4:1
|
4 | #[rpc]
| ^^^^^^
Indeed does the #[rpc] macro have a dependency on serde:
jsonrpc/derive/src/rpc_trait.rs
Lines 258 to 261 in 54c4de5
| mod #mod_name_ident { | |
| use #serde_name as _serde; | |
| use #core_name as _jsonrpc_core; | |
| use super::*; |
serde is only listed as a dev-dependency though, so it will not propagate into projects consuming the library:
Lines 21 to 30 in 54c4de5
| [dev-dependencies] | |
| jsonrpc-core = { version = "13.0", path = "../core" } | |
| jsonrpc-core-client = { version = "13.0", path = "../core-client" } | |
| jsonrpc-pubsub = { version = "13.0", path = "../pubsub" } | |
| jsonrpc-tcp-server = { version = "13.0", path = "../tcp" } | |
| futures = "~0.1.6" | |
| serde = { version = "1.0", features = ["derive"] } | |
| serde_json = "1.0" | |
| tokio = "0.1" | |
| trybuild = "1.0" |
Adding serde explicitly to my Cargo.toml did fix the issue, but brought up another missing dependency (jsonrpc-core-client) which, again, had to be added manually despite being used by the #[rpc] macro.
Am I missing something? Would it be possible to clarify which dependencies have to be provided manually when using jsonrpc-derive?