Cargo Features

[dependencies]
keyring_node = { version = "0.1.0-beta.4", default-features = false, features = ["all", "server", "cli", "embedded", "node", "client", "shell", "serde", "tor", "vendored_openssl", "bech32", "log", "env_logger"] }

Recommended set of features:

  1. Standalone node: server (=node+shell)
  2. Cli to remote node: cli (auto includes shell and integration)
  3. Mobile app talking to a server: client
  4. Mobile app with embedded node: embedded (auto includes client + node)
  5. Simple cli utility app: shell
default = cli, server

These default features are set whenever keyring_node is added without default-features = false somewhere in the dependency tree.

all = cli, serde, server, tor, vendored_openssl
server default all? = node, shell

Server is a standalone application that runs daemon

Enables server of microservices ^0.3.2

Required by the keyringd binary

cli default all? = client, serde, shell

Command-line application feature

Enables cli of microservices ^0.3.2

Affects keyring_node::cli

Required by the keyring-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.3.2

Affects error::ConfigInitError

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-line

Enables bitcoin ^0.26, keygen, url and zmq of internet2 ^0.3.4, node of microservices ^0.3.2

Affects keyring_node::daemon, keyring_node::vault

client cli embedded? = _rpc, base64, clap

Feature is required for any applications that talks to daemon processes

Enables bitcoin ^0.26, url and zmq of internet2 ^0.3.4, client and node of microservices ^0.3.2

shell cli server = clap, colored, configure_me, 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 shell of microservices ^0.3.2 and parse_arg of amplify ^3

Rust language

Affects error::ConfigInitError

serde all? cli node? shell? = serde_crate, serde_json, serde_with, serde_yaml, toml

Enables serde of amplify ^3, use-serde of bitcoin ^0.26, serde of chrono, internet2 ^0.3.4, lnpbp ^0.3, microservices ^0.3.2, slip132 ^0.3.0-rc.1, and descriptor-wallet ^0.3

tor all?

Enables tor of internet2 ^0.3.4 and microservices ^0.3.2

internet2:

Networking
----------

vendored_openssl all?

Enables vendored_openssl of internet2 ^0.3.4 and microservices ^0.3.2

_rpc client? node?

Affects keyring_node::rpc

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.

serde_crate serde?

Enables serde

Serialization & parsing

serde_with serde?

Enables serde_with ~1.5.1

serde_json serde?
serde_yaml node? serde?

Enables serde_yaml ~0.8.13

Affects opts::KEYRING_VAULT_FORMAT

toml node? serde?

Enables toml ~0.5.6

bech32 implicit feature

Enables bech32 ~0.7.2

bech32:

Encodes and decodes the Bech32 format and implements the bech32 and bech32m checksums

base64 client? node?

Enables base64 ~0.12.1

settings shell?

Enables config ~0.10.1

Congig & logging

configure_me shell?
dotenv shell?
clap client? shell?

Enables clap =3.0.0-beta.2

log implicit feature

Enables log

log:

A lightweight logging facade for Rust

env_logger implicit feature

Enables env_logger ~0.7.1

env_logger:

A logging implementation for log which is configured via an environment variable

colored shell?

Enables colored ~2.0.0

shellexpand shell?

Enables shellexpand ~2.0.0