Cargo Features

[dependencies]
arti-client = { version = "0.23.0", default-features = false, features = ["full", "async-std", "bridge-client", "memquota", "tokio", "native-tls", "pt-client", "testing", "rustls", "static", "static-sqlite", "static-native-tls", "accel-sha1-asm", "accel-openssl", "onion-service-client", "onion-service-service", "keymgr", "vanguards", "compression", "experimental", "experimental-api", "dirfilter", "ephemeral-keystore", "error_detail", "geoip", "rpc", "restricted-discovery"] }

examples call TorClient::create_bootstrapped which needs PreferredRuntime @@ test-all-crates ignore

default = compression, native-tls, tokio

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

full = anyhow, async-std, bridge-client, compression, keymgr, native-tls, onion-service-client, onion-service-service, pt-client, tokio, vanguards

"full" is a top-level selector that turns on every feature, _EXCEPT FOR_:

Enables full of fs-mistrust, safelog, tor-async-utils, tor-basic-utils, tor-chanmgr, tor-circmgr, tor-config, tor-dirmgr, tor-error, optional tor-geoip, tor-guardmgr, optional tor-hsclient, optional tor-hscrypto, optional tor-hsservice, tor-keymgr, tor-linkspec, tor-llcrypto, tor-memquota, tor-netdir, tor-netdoc, tor-persist, tor-proto, optional tor-ptmgr, optional tor-rpcbase, and tor-rtcompat

tor-memquota:

tor-memquota dependency is unconditional, but most of the code is behind tor-memquota/memquota

async-std full?

* Features that are experimental or unstable
* Features that are testing-only
* Features which are select a particular implementation or build flag and
which therefore are not strictly additive.
* Features which may introduce unnecessary licensing restrictions.

Enables async-std of tor-rtcompat

bridge-client full? pt-client?

Enables bridge-client of tor-dirmgr and tor-guardmgr

tor-guardmgr:

Support for using bridges as a client. Note that this is not the same as the pt-client feature, since here we are not concerned with pluggable transports necessarily.

memquota experimental?

Enables memquota of tor-memquota

tokio default full?

Enables tokio of tor-proto and tor-rtcompat

native-tls default full? static-native-tls?

Enables native-tls of tor-rtcompat

pt-client full? = bridge-client, tor-ptmgr

Enables pt-client of tor-chanmgr and tor-guardmgr

tor-guardmgr:

Support for pluggable transports.

Affects config::pt

testing experimental? = visibility

Expose interfaces useful for testing

rustls

This is not nonadditive from a software POV, but we mark it as such because it includes code licensed under the old OpenSSL license (which was 4-clause BSD),
which in turn introduces a GPL-incompatibility.

Enables rustls of tor-rtcompat

static = static-sqlite

depends directly on tor-rtcompat/static so native-tls doesn't get automatically included

Enables static of tor-rtcompat

static-sqlite static?

Enables static of tor-dirmgr

static-native-tls = native-tls

Enables static of tor-rtcompat

accel-sha1-asm

Enables with-sha1-asm of tor-llcrypto

accel-openssl

Enables with-openssl of tor-llcrypto

onion-service-client full? = tor-hsclient, tor-hscrypto
onion-service-service full? = keymgr, tor-hscrypto, tor-hsservice

Enables state-dir of tor-persist

tor-persist:

Enable the state_dir module

Affects config::onion_service

keymgr full? onion-service-service?

Enables keymgr of tor-hsclient and tor-keymgr

vanguards full?

Enables vanguards of tor-circmgr and tor-guardmgr

tor-guardmgr:

Vanguards support

compression default full?

Enables compression of tor-dirmgr

experimental = dirfilter, ephemeral-keystore, error_detail, experimental-api, geoip, memquota, restricted-discovery, rpc, testing

Enables experimental of tor-circmgr, tor-config, tor-dirmgr, tor-guardmgr, tor-hsservice, tor-keymgr, tor-netdoc, and tor-proto

tor-circmgr:

Enable experimental APIs that are not yet officially supported.

These APIs are not covered by semantic versioning. Using this feature voids your "semver warrantee".

experimental-api experimental?

Enable experimental APIs that are not yet officially supported.

These APIs are not covered by semantic versioning. Using this feature voids your "semver warrantee".

dirfilter experimental?

Enables dirfilter of tor-dirmgr

ephemeral-keystore experimental?

Enables ephemeral-keystore of tor-keymgr

error_detail experimental?
geoip experimental? = tor-geoip

Enables geoip of tor-circmgr and tor-dirmgr

rpc experimental? = dyn-clone, tor-rpcbase

Affects arti-client::rpc

restricted-discovery experimental?

Enables restricted-discovery of tor-hsservice

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.

anyhow full?
dyn-clone rpc?
tor-geoip geoip?
tor-hsclient keymgr? onion-service-client?
tor-hscrypto onion-service-client? onion-service-service?
tor-hsservice experimental? onion-service-service? restricted-discovery?
tor-ptmgr pt-client?
tor-rpcbase rpc?
visibility testing?