logo
pub struct Config {
Show 14 fields pub profile: Profile, pub address: IpAddr, pub port: u16, pub workers: usize, pub max_blocking: usize, pub ident: Ident, pub limits: Limits, pub temp_dir: RelativePathBuf, pub keep_alive: u32, pub tls: Option<TlsConfig>, pub secret_key: SecretKey, pub shutdown: Shutdown, pub log_level: LogLevel, pub cli_colors: bool, /* private fields */
}
Expand description

Rocket server configuration.

See the module level docs as well as the configuration guide for further details.

Defaults

All configuration values have a default, documented in the fields section below. Config::debug_default() returns the default values for the debug profile while Config::release_default() the default values for the release profile. The Config::default() method automatically selects the appropriate of the two based on the selected profile. With the exception of log_level, which is normal in debug and critical in release, and secret_key, which is regenerated from a random value if not set in “debug” mode only, all default values are identical in all profiles.

Provider Details

Config is a Figment Provider with the following characteristics:

  • Profile

    The profile is set to the value of the profile field.

  • Metadata

    This provider is named Rocket Config. It does not specify a Source and uses default interpolatation.

  • Data

    The data emitted by this provider are the keys and values corresponding to the fields and values of the structure. The dictionary is emitted to the “default” meta-profile.

Note that these behaviors differ from those of Config::figment().

Fields

profile: Profile

The selected profile. (default: debug debug / release release)

Note: This field is never serialized nor deserialized. When a Config is merged into a Figment as a Provider, this profile is selected on the Figment. When a Config is extracted, this field is set to the extracting Figment’s selected Profile.

address: IpAddr

IP address to serve on. (default: 127.0.0.1)

port: u16

Port to serve on. (default: 8000)

workers: usize

Number of threads to use for executing futures. (default: num_cores)

Note: Rocket only reads this value from sources in the default provider.

max_blocking: usize

Limit on threads to start for blocking tasks. (default: 512)

ident: Ident

How, if at all, to identify the server via the Server header. (default: "Rocket")

limits: Limits

Streaming read size limits. (default: Limits::default())

temp_dir: RelativePathBuf

Directory to store temporary files in. (default: std::env::temp_dir())

keep_alive: u32

Keep-alive timeout in seconds; disabled when 0. (default: 5)

tls: Option<TlsConfig>
Available on crate feature tls only.

The TLS configuration, if any. (default: None)

secret_key: SecretKey
Available on crate feature secrets only.

The secret key for signing and encrypting. (default: 0)

Note: This field always serializes as a 256-bit array of 0s to aid in preventing leakage of the secret key.

shutdown: Shutdown

Graceful shutdown configuration. (default: Shutdown::default())

log_level: LogLevel

Max level to log. (default: debug normal / release critical)

cli_colors: bool

Whether to use colors and emoji when logging. (default: true)

Implementations

Returns the default configuration for the debug profile, irrespective of the Rust compilation profile and ROCKET_PROFILE.

This may differ from the configuration used by default, Config::default(), which is selected based on the Rust compilation profile. See defaults and provider details for specifics.

Example
use rocket::Config;

let config = Config::debug_default();

Returns the default configuration for the release profile, irrespective of the Rust compilation profile and ROCKET_PROFILE.

This may differ from the configuration used by default, Config::default(), which is selected based on the Rust compilation profile. See defaults and provider details for specifics.

Example
use rocket::Config;

let config = Config::release_default();

Returns the default provider figment used by rocket::build().

The default figment reads from the following sources, in ascending priority order:

  1. Config::default() (see defaults)
  2. Rocket.toml or filename in ROCKET_CONFIG environment variable
  3. ROCKET_ prefixed environment variables

The profile selected is the value set in the ROCKET_PROFILE environment variable. If it is not set, it defaults to debug when compiled in debug mode and release when compiled in release mode.

Example
use rocket::Config;
use serde::Deserialize;

#[derive(Deserialize)]
struct MyConfig {
    app_key: String,
}

let my_config = Config::figment().extract::<MyConfig>();

Attempts to extract a Config from provider, returning the result.

Example
use rocket::Config;
use rocket::figment::providers::{Toml, Format, Env};

// Use Rocket's default `Figment`, but allow values from `MyApp.toml`
// and `MY_APP_` prefixed environment variables to supersede its values.
let figment = Config::figment()
    .merge(("some-thing", 123))
    .merge(Env::prefixed("CONFIG_"));

let config = Config::try_from(figment);

Extract a Config from provider, panicking if extraction fails.

Panics

If extraction fails, prints an error message indicating the failure and panics. For a version that doesn’t panic, use Config::try_from().

Example
use rocket::Config;
use rocket::figment::providers::{Toml, Format, Env};

// Use Rocket's default `Figment`, but allow values from `MyApp.toml`
// and `MY_APP_` prefixed environment variables to supersede its values.
let figment = Config::figment()
    .merge(Toml::file("MyApp.toml").nested())
    .merge(Env::prefixed("MY_APP_"));

let config = Config::from(figment);

Returns true if TLS is enabled.

TLS is enabled when the tls feature is enabled and TLS has been configured with at least one ciphersuite. Note that without changing defaults, all supported ciphersuites are enabled in the recommended configuration.

Example
let config = rocket::Config::default();
if config.tls_enabled() {
    println!("TLS is enabled!");
} else {
    println!("TLS is disabled.");
}

Returns true if mTLS is enabled.

mTLS is enabled when TLS is enabled (Config::tls_enabled()) and the mtls feature is enabled and mTLS has been configured with a CA certificate chain.

Example
let config = rocket::Config::default();
if config.mtls_enabled() {
    println!("mTLS is enabled!");
} else {
    println!("mTLS is disabled.");
}

Associated constants for default profiles.

The default debug profile: debug.

The default release profile: release.

The default profile: “debug” on debug, “release” on release.

Associated constants for stringy versions of configuration parameters.

The stringy parameter name for setting/extracting Config::address.

The stringy parameter name for setting/extracting Config::port.

The stringy parameter name for setting/extracting Config::workers.

The stringy parameter name for setting/extracting Config::max_blocking.

The stringy parameter name for setting/extracting Config::keep_alive.

The stringy parameter name for setting/extracting Config::limits.

The stringy parameter name for setting/extracting Config::tls.

The stringy parameter name for setting/extracting Config::secret_key.

The stringy parameter name for setting/extracting Config::temp_dir.

The stringy parameter name for setting/extracting Config::log_level.

The stringy parameter name for setting/extracting Config::shutdown.

The stringy parameter name for setting/extracting Config::cli_colors.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the default configuration based on the Rust compilation profile. This is Config::debug_default() in debug and Config::release_default() in release.

Example
use rocket::Config;

let config = Config::default();

Deserialize this value from the given Serde deserializer. Read more

The associated error to be returned if derivation fails.

Derives an instance of Self from the incoming request metadata. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Returns the Metadata for this provider, identifying itself and its configuration sources. Read more

Returns the configuration data.

Optionally returns a profile to set on the Figment this provider is merged into. The profile is only set if self is merged. Read more

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Converts self into a collection.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more