Struct rocket::config::Config

source ·
pub struct Config {
Show 15 fields pub profile: Profile, pub address: IpAddr, pub port: u16, pub workers: usize, pub max_blocking: usize, pub ident: Ident, pub ip_header: Option<Uncased<'static>>, 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 interpolation.

  • 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")

§ip_header: Option<Uncased<'static>>

The name of a header, whose value is typically set by an intermediary server or proxy, which contains the real IP address of the connecting client. Used internally and by Request::client_ip() and Request::real_ip().

To disable using any header for this purpose, set this value to false. Deserialization semantics are identical to those of Ident except that the value must syntactically be a valid HTTP header name.

(default: "X-Real-IP")

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

source§

impl Config

source

pub fn debug_default() -> Config

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();
source

pub fn release_default() -> Config

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();
source

pub fn figment() -> Figment

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>();
source

pub fn try_from<T: Provider>(provider: T) -> Result<Self>

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);
source

pub fn from<T: Provider>(provider: T) -> Self

Extract a Config from provider, panicking if extraction fails.

Panics

If extraction fails, prints an error message indicating the error 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);
source

pub fn tls_enabled(&self) -> bool

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.");
}
source

pub fn mtls_enabled(&self) -> bool

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.");
}
source§

impl Config

Associated constants for default profiles.

source

pub const DEBUG_PROFILE: Profile = _

The default debug profile: debug.

source

pub const RELEASE_PROFILE: Profile = _

The default release profile: release.

source

pub const DEFAULT_PROFILE: Profile = Self::DEBUG_PROFILE

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

source§

impl Config

Associated constants for stringy versions of configuration parameters.

source

pub const ADDRESS: &'static str = "address"

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

source

pub const PORT: &'static str = "port"

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

source

pub const WORKERS: &'static str = "workers"

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

source

pub const MAX_BLOCKING: &'static str = "max_blocking"

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

source

pub const KEEP_ALIVE: &'static str = "keep_alive"

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

source

pub const IDENT: &'static str = "ident"

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

source

pub const IP_HEADER: &'static str = "ip_header"

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

source

pub const LIMITS: &'static str = "limits"

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

source

pub const TLS: &'static str = "tls"

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

source

pub const SECRET_KEY: &'static str = "secret_key"

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

source

pub const TEMP_DIR: &'static str = "temp_dir"

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

source

pub const LOG_LEVEL: &'static str = "log_level"

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

source

pub const SHUTDOWN: &'static str = "shutdown"

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

source

pub const CLI_COLORS: &'static str = "cli_colors"

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

source

pub const PARAMETERS: &'static [&'static str] = _

An array of all of the stringy parameter names.

Trait Implementations§

source§

impl Clone for Config

source§

fn clone(&self) -> Config

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Config

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Config

source§

fn default() -> Config

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();
source§

impl<'de> Deserialize<'de> for Config

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<'r> FromRequest<'r> for &'r Config

§

type Error = Infallible

The associated error to be returned if derivation fails.
source§

fn from_request<'life0, 'async_trait>( req: &'r Request<'life0> ) -> Pin<Box<dyn Future<Output = Outcome<Self, Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, 'r: 'async_trait, 'life0: 'async_trait,

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

impl PartialEq for Config

source§

fn eq(&self, other: &Config) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Provider for Config

source§

fn metadata(&self) -> Metadata

Returns the Metadata for this provider, identifying itself and its configuration sources.
source§

fn data(&self) -> Result<Map<Profile, Dict>>

Returns the configuration data.
source§

fn profile(&self) -> Option<Profile>

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

impl Serialize for Config

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Config

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T> AsTaggedExplicit<'a> for Twhere T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self>

§

impl<'a, T> AsTaggedImplicit<'a> for Twhere T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self>

source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

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

fn in_current_span(self) -> Instrumented<Self>

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

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

§

impl<T> IntoCollection<T> for T

§

fn into_collection<A>(self) -> SmallVec<A> where A: Array<Item = T>,

Converts self into a collection.
§

fn mapped<U, F, A>(self, f: F) -> SmallVec<A> where F: FnMut(T) -> U, A: Array<Item = U>,

source§

impl<T> Paint for Twhere T: ?Sized,

source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to Color::Primary.

Example
println!("{}", value.primary());
source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to Color::Fixed.

Example
println!("{}", value.fixed(color));
source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to Color::Rgb.

Example
println!("{}", value.rgb(r, g, b));
source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to Color::Black.

Example
println!("{}", value.black());
source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to Color::Red.

Example
println!("{}", value.red());
source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to Color::Green.

Example
println!("{}", value.green());
source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to Color::Yellow.

Example
println!("{}", value.yellow());
source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to Color::Blue.

Example
println!("{}", value.blue());
source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to Color::Magenta.

Example
println!("{}", value.magenta());
source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to Color::Cyan.

Example
println!("{}", value.cyan());
source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to Color::White.

Example
println!("{}", value.white());
source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightBlack.

Example
println!("{}", value.bright_black());
source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightRed.

Example
println!("{}", value.bright_red());
source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightGreen.

Example
println!("{}", value.bright_green());
source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightYellow.

Example
println!("{}", value.bright_yellow());
source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightBlue.

Example
println!("{}", value.bright_blue());
source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightMagenta.

Example
println!("{}", value.bright_magenta());
source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightCyan.

Example
println!("{}", value.bright_cyan());
source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightWhite.

Example
println!("{}", value.bright_white());
source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to Color::Primary.

Example
println!("{}", value.on_primary());
source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to Color::Fixed.

Example
println!("{}", value.on_fixed(color));
source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to Color::Rgb.

Example
println!("{}", value.on_rgb(r, g, b));
source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to Color::Black.

Example
println!("{}", value.on_black());
source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to Color::Red.

Example
println!("{}", value.on_red());
source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to Color::Green.

Example
println!("{}", value.on_green());
source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to Color::Yellow.

Example
println!("{}", value.on_yellow());
source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to Color::Blue.

Example
println!("{}", value.on_blue());
source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to Color::Magenta.

Example
println!("{}", value.on_magenta());
source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to Color::Cyan.

Example
println!("{}", value.on_cyan());
source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to Color::White.

Example
println!("{}", value.on_white());
source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightBlack.

Example
println!("{}", value.on_bright_black());
source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightRed.

Example
println!("{}", value.on_bright_red());
source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightGreen.

Example
println!("{}", value.on_bright_green());
source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightYellow.

Example
println!("{}", value.on_bright_yellow());
source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightBlue.

Example
println!("{}", value.on_bright_blue());
source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightMagenta.

Example
println!("{}", value.on_bright_magenta());
source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightCyan.

Example
println!("{}", value.on_bright_cyan());
source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightWhite.

Example
println!("{}", value.on_bright_white());
source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Bold.

Example
println!("{}", value.bold());
source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Dim.

Example
println!("{}", value.dim());
source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Italic.

Example
println!("{}", value.italic());
source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Underline.

Example
println!("{}", value.underline());

Returns self with the attr() set to Attribute::Blink.

Example
println!("{}", value.blink());

Returns self with the attr() set to Attribute::RapidBlink.

Example
println!("{}", value.rapid_blink());
source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Invert.

Example
println!("{}", value.invert());
source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Conceal.

Example
println!("{}", value.conceal());
source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Strike.

Example
println!("{}", value.strike());
source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Mask.

Example
println!("{}", value.mask());
source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Wrap.

Example
println!("{}", value.wrap());
source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Linger.

Example
println!("{}", value.linger());
source§

fn clear(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Clear.

Example
println!("{}", value.clear());
source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Bright.

Example
println!("{}", value.bright());
source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::OnBright.

Example
println!("{}", value.on_bright());
source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
source§

fn new(self) -> Painted<Self>where Self: Sized,

Create a new Painted with a default Style. Read more
source§

fn paint<S>(&self, style: S) -> Painted<&Self>where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,