Cargo Features
[dependencies]
farcaster_node = { version = "0.8.4", default-features = false, features = ["all", "server", "cli", "embedded", "node", "client", "shell", "serde", "tor", "integration_test", "bech32"] }
Recommended set of features:
- Standalone node:
server(=node+shell)- Cli to remote node:
cli(auto includesshellandintegration)- Mobile app talking to a server:
client- Mobile app with embedded node:
embedded(auto includesclient+node)- Simple cli utility app:
shell
- default = cli, server
-
These default features are set whenever
farcaster_nodeis added withoutsomewhere in the dependency tree.default-features = false - all = cli, serde, server, tor
- server default all? = nix, node, shell
-
Server is a standalone application that runs daemon
Enables server of microservices ^0.8.0
Required by farcasterd, grpcd, peerd, swapd, syncerd and walletd binaries
- cli default all? = client, serde, shell
-
Command-line application feature
Enables cli of microservices ^0.8.0
Affects
farcaster_node::cli…Required by the swap-cli binary
- embedded = client, node
-
Embedded is an app that contains embedded node and that talks to it through integration layer
Enables embedded of microservices ^0.8.0
- node embedded? server = _rpc, base64, serde, serde_yaml, toml
-
Server node can be run as a part of mobile app and other types of clients; thus
server!=node. This feature results in building with features not required for command-lineEnables rand of bitcoin ^0.28, keygen and zmq of internet2 ^0.8.3, node of microservices ^0.8.0
Affects
farcaster_node::databased,farcaster_node::farcasterd,farcaster_node::grpcd,farcaster_node::peerd,farcaster_node::swapd,farcaster_node::syncerd,farcaster_node::walletd… - client cli embedded? = _rpc, base64, clap
-
Feature is required for any applications that talks to daemon processes
Enables rand of bitcoin ^0.28, zmq of internet2 ^0.8.3, client and node of microservices ^0.8.0
- shell cli server = clap, colored, dotenv, serde, settings, shellexpand
-
Required for all apps that can be launched from command-line shell as binaries (i.e. both servers and cli)
Enables parse_arg of amplify ^3.13.0, shell of microservices ^0.8.0
Affects
farcaster_node::opts,syncerd::opts… - serde all? cli node? shell? = serde_crate, serde_json, serde_with, serde_yaml, toml
-
Enables serde of amplify ^3.13.0, use-serde of bitcoin ^0.28 and serde of chrono, internet2 ^0.8.3, microservices ^0.8.0, and slip132 ^0.7.0
internet2:
Exposing core rust componens
----------------------------
These also include re-assembly of necessary features from dependencies - tor all?
-
Enables tor of internet2 ^0.8.3 and microservices ^0.8.0
internet2:
Networking
---------- - integration_test = regex
- _rpc client? node?
-
Affects
farcaster_node::bus,farcaster_node::config…
Features from optional dependencies
In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.
- base64 client? node?
-
Enables base64 ^0.12
- bech32 implicit feature
-
Enables bech32 ^0.7
bech32:
Encodes and decodes the Bech32 format and implements the bech32 and bech32m checksums
- clap client? shell?
-
Enables clap ^3.0.0
- colored shell?
-
Enables colored ^2
- dotenv shell?
- nix server
-
Enables nix ^0.19
- regex integration_test?
- serde_crate serde?
-
Enables serde
we rename the crate below because there is already a feature called
serde, so it would conflict with the implicit feature that would be added by adding theserdecrate; this can be fixed once rust-version is updated to 1.60.0, which solves this by adding thedep:prefix for features defined by dependencies - serde_json serde?
- serde_with serde?
-
Enables serde_with ^1.8
- serde_yaml node? serde?
-
Enables serde_yaml ^0.8
- settings shell?
-
Enables config ^0.10
- shellexpand shell?
-
Enables shellexpand ^2
- toml node? serde?
-
Enables toml ^0.5