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 aSource
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>
tls
only.The TLS configuration, if any. (default: None
)
secret_key: SecretKey
secrets
only.The secret key for signing and encrypting. (default: 0
)
Note: This field always serializes as a 256-bit array of 0
s 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
impl Config
Sourcepub fn debug_default() -> Config
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();
Sourcepub fn release_default() -> Config
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();
Sourcepub fn figment() -> Figment
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:
Config::default()
(see defaults)Rocket.toml
or filename inROCKET_CONFIG
environment variableROCKET_
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>();
Sourcepub fn try_from<T: Provider>(provider: T) -> Result<Self>
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);
Sourcepub fn from<T: Provider>(provider: T) -> Self
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);
Sourcepub fn tls_enabled(&self) -> bool
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.");
}
Sourcepub fn mtls_enabled(&self) -> bool
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
impl Config
Associated constants for default profiles.
Sourcepub const DEBUG_PROFILE: Profile = _
pub const DEBUG_PROFILE: Profile = _
The default debug profile: debug
.
Sourcepub const RELEASE_PROFILE: Profile = _
pub const RELEASE_PROFILE: Profile = _
The default release profile: release
.
Sourcepub const DEFAULT_PROFILE: Profile = Self::DEBUG_PROFILE
pub const DEFAULT_PROFILE: Profile = Self::DEBUG_PROFILE
The default profile: “debug” on debug
, “release” on release
.
Source§impl Config
impl Config
Associated constants for stringy versions of configuration parameters.
Sourcepub const ADDRESS: &'static str = "address"
pub const ADDRESS: &'static str = "address"
The stringy parameter name for setting/extracting Config::address
.
Sourcepub const PORT: &'static str = "port"
pub const PORT: &'static str = "port"
The stringy parameter name for setting/extracting Config::port
.
Sourcepub const WORKERS: &'static str = "workers"
pub const WORKERS: &'static str = "workers"
The stringy parameter name for setting/extracting Config::workers
.
Sourcepub const MAX_BLOCKING: &'static str = "max_blocking"
pub const MAX_BLOCKING: &'static str = "max_blocking"
The stringy parameter name for setting/extracting Config::max_blocking
.
Sourcepub const KEEP_ALIVE: &'static str = "keep_alive"
pub const KEEP_ALIVE: &'static str = "keep_alive"
The stringy parameter name for setting/extracting Config::keep_alive
.
Sourcepub const IDENT: &'static str = "ident"
pub const IDENT: &'static str = "ident"
The stringy parameter name for setting/extracting Config::ident
.
Sourcepub const IP_HEADER: &'static str = "ip_header"
pub const IP_HEADER: &'static str = "ip_header"
The stringy parameter name for setting/extracting Config::ip_header
.
Sourcepub const LIMITS: &'static str = "limits"
pub const LIMITS: &'static str = "limits"
The stringy parameter name for setting/extracting Config::limits
.
Sourcepub const TLS: &'static str = "tls"
pub const TLS: &'static str = "tls"
The stringy parameter name for setting/extracting Config::tls
.
Sourcepub const SECRET_KEY: &'static str = "secret_key"
pub const SECRET_KEY: &'static str = "secret_key"
The stringy parameter name for setting/extracting Config::secret_key
.
Sourcepub const TEMP_DIR: &'static str = "temp_dir"
pub const TEMP_DIR: &'static str = "temp_dir"
The stringy parameter name for setting/extracting Config::temp_dir
.
Sourcepub const LOG_LEVEL: &'static str = "log_level"
pub const LOG_LEVEL: &'static str = "log_level"
The stringy parameter name for setting/extracting Config::log_level
.
Sourcepub const SHUTDOWN: &'static str = "shutdown"
pub const SHUTDOWN: &'static str = "shutdown"
The stringy parameter name for setting/extracting Config::shutdown
.
Sourcepub const CLI_COLORS: &'static str = "cli_colors"
pub const CLI_COLORS: &'static str = "cli_colors"
The stringy parameter name for setting/extracting Config::cli_colors
.
Sourcepub const PARAMETERS: &'static [&'static str] = _
pub const PARAMETERS: &'static [&'static str] = _
An array of all of the stringy parameter names.
Trait Implementations§
Source§impl Default for Config
impl Default for Config
Source§fn default() -> Config
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
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'r> FromRequest<'r> for &'r Config
impl<'r> FromRequest<'r> for &'r Config
Source§type Error = Infallible
type Error = Infallible
Source§impl Provider for Config
impl Provider for Config
impl StructuralPartialEq for Config
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<'a, T> AsTaggedExplicit<'a> for Twhere
T: 'a,
impl<'a, T> AsTaggedExplicit<'a> for Twhere
T: 'a,
Source§impl<'a, T> AsTaggedImplicit<'a> for Twhere
T: 'a,
impl<'a, T> AsTaggedImplicit<'a> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
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 bright_black(&self) -> Painted<&T>
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>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
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>
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>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
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>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
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>
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>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
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>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
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>
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>
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>
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>
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>
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>
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 underline(&self) -> Painted<&T>
fn underline(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::Underline
.
§Example
println!("{}", value.underline());
Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::RapidBlink
.
§Example
println!("{}", value.rapid_blink());
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
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 clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
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);