Cargo Features

[dependencies]
roadster = { version = "0.6.20", default-features = false, features = ["http", "open-api", "sidekiq", "db-sql", "email", "email-smtp", "email-sendgrid", "jwt", "jwt-ietf", "jwt-openid", "cli", "otel", "grpc", "test-containers", "testing-mocks", "config-yml", "testing"] }
default = cli, db-sql, jwt-ietf, open-api, otel, sidekiq

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

http open-api

Enables axum, axum-extra, http-body-util, mime, tower, and tower-http

Affects api::http, service::http, service::Service.http, api::http, error::axum, error::mime, middleware::http, service::http, common::address

open-api default = http

Enables aide and schemars

Affects roadster::list_routes, roadster::open_api_schema, health::api_routes, http::docs, http::default_api_routes, ping::api_routes, default_routes::DefaultRoutes.api_schema, default_routes::DefaultRoutes.scalar, default_routes::DefaultRoutes.redoc

sidekiq default

Enables bb8, num_cpus, and rusty-sidekiq

rusty-sidekiq:

Workers

Affects context::RedisEnqueue, context::RedisFetch, health_check::HealthCheck.sidekiq, service::Service.sidekiq, worker::sidekiq, error::sidekiq, health_check::sidekiq_enqueue, health_check::sidekiq_fetch, worker::sidekiq

db-sql default

Enables sea-orm and sea-orm-migration

sea-orm:

DB

Affects roadster::migrate, app::App.db_connection_options, health_check::HealthCheck.database, lifecycle::LifecycleHandler.db_migration, config::database, config::AppConfig.database, health_check::database, roadster::migration, lifecycle::db_migration

email email-sendgrid? email-smtp?

Enables lettre

Email

Affects config::email, config::AppConfig.email, error::email, health_check::email

email-smtp = email

Affects email::smtp, email::Email.smtp, health_check::HealthCheck.smtp, email::smtp

email-sendgrid = email

Enables sendgrid

Affects email::sendgrid, email::Email.sendgrid

jwt jwt-ietf jwt-openid?

Enables jsonwebtoken

Auth

Affects auth::jwt

jwt-ietf default = jwt

Affects jwt::ietf

jwt-openid = jwt

Affects jwt::openid

cli default

Enables clap

CLI

Affects api::cli, app::PreparedApp.roadster_cli, app::PreparedApp.app_cli, lifecycle::AppLifecycleHandler.before_service_cli, service::AppService.handle_cli

otel default

Enables opentelemetry ^0.26.0, opentelemetry-otlp ^0.26.0, opentelemetry_sdk ^0.26.0, prost, and tracing-opentelemetry ^0.27.0

prost:

Roadster technically doesn't need a direct dependency on prost, but we add one here to allow our cargo minimal-versions check check to pass -- opentelemetry-proto requires version 0.13.2 or higher in order to compile -- it fails to compile with 0.13.1 even though its dependencies don't specify 0.13.2.

Affects tracing::Tracing.service_name, tracing::Tracing.trace_propagation, tracing::Tracing.otlp_endpoint, tracing::Tracing.metrics_export_interval

grpc

Enables tonic

gRPC

Affects service::grpc, service::Service.grpc, error::tonic, service::grpc, common::address

test-containers = testing

Enables testcontainers-modules

Affects database::Database.test_container, config::TestContainer, sidekiq::Redis.test_container

testing-mocks = testing

Enables mockall, mock of optional sea-orm

config-yml

Enables yaml of config

Config We only support toml configs currently, and one of the default features (rust-ini) pulls in a dependency that breaks the coverage build on nightly.

testing test-containers? testing-mocks?

Enables insta, rstest, and testcontainers-modules

insta:

Testing

Affects app::init_state