pub struct Options(/* private fields */);Expand description
A bitset representing configurable options for FileServer.
The valid options are:
Options::None- Return only present, visible files.Options::DotFiles- In addition to visible files, return dotfiles.Options::Index- Renderindex.htmlpages for directory requests.Options::IndexFile- Allow serving a single file as the index.Options::Missing- Don’t fail if the path to serve is missing.Options::NormalizeDirs- Redirect directories without a trailing slash to ones with a trailing slash.
Options structures can be ord together to select two or more options.
For instance, to request that both dot files and index pages be returned,
use Options::DotFiles | Options::Index.
Implementations§
Source§impl Options
impl Options
Sourcepub const None: Options
pub const None: Options
All options disabled.
This is different than Options::default(), which
enables Options::Index.
Sourcepub const Index: Options
pub const Index: Options
Respond to requests for a directory with the index.html file in that
directory, if it exists.
When enabled, FileServer will respond to requests for a directory
/foo or /foo/ with the file at ${root}/foo/index.html if it
exists. When disabled, requests to directories will always forward.
Enabled by default.
Sourcepub const DotFiles: Options
pub const DotFiles: Options
Allow serving dotfiles.
When enabled, FileServer will respond to requests for files or
directories beginning with .. When disabled, any dotfiles will be
treated as missing.
Disabled by default.
Sourcepub const NormalizeDirs: Options
pub const NormalizeDirs: Options
Normalizes directory requests by redirecting requests to directory paths without a trailing slash to ones with a trailing slash.
When enabled, the FileServer handler will respond to requests for a
directory without a trailing / with a permanent redirect (308) to the
same path with a trailing /. This ensures relative URLs within any
document served from that directory will be interpreted relative to that
directory rather than its parent.
Disabled by default.
§Example
Given the following directory structure…
static/
└── foo/
├── cat.jpeg
└── index.html…with FileServer::from("static"), both requests to /foo and
/foo/ will serve static/foo/index.html. If index.html references
cat.jpeg as a relative URL, the browser will request /cat.jpeg
(static/cat.jpeg) when the request for /foo was handled and
/foo/cat.jpeg (static/foo/cat.jpeg) if /foo/ was handled. As a
result, the request in the former case will fail. To avoid this,
NormalizeDirs will redirect requests to /foo to /foo/ if the file
that would be served is a directory.
Sourcepub const IndexFile: Options
pub const IndexFile: Options
Allow serving a file instead of a directory.
By default, FileServer will error on construction if the path to serve
does not point to a directory. When this option is enabled, if a path to
a file is provided, FileServer will serve the file as the root of the
mount path.
§Example
If the file tree looks like:
static/
└── cat.jpegThen cat.jpeg can be served at /cat with:
use rocket::fs::{FileServer, Options};
#[launch]
fn rocket() -> _ {
rocket::build()
.mount("/cat", FileServer::new("static/cat.jpeg", Options::IndexFile))
}Sourcepub const Missing: Options
pub const Missing: Options
Don’t fail if the file or directory to serve is missing.
By default, FileServer will error if the path to serve is missing to
prevent inevitable 404 errors. This option overrides that.
Sourcepub fn contains(self, other: Options) -> bool
pub fn contains(self, other: Options) -> bool
Returns true if self is a superset of other. In other words,
returns true if all of the options in other are also in self.
§Example
use rocket::fs::Options;
let index_request = Options::Index | Options::DotFiles;
assert!(index_request.contains(Options::Index));
assert!(index_request.contains(Options::DotFiles));
let index_only = Options::Index;
assert!(index_only.contains(Options::Index));
assert!(!index_only.contains(Options::DotFiles));
let dot_only = Options::DotFiles;
assert!(dot_only.contains(Options::DotFiles));
assert!(!dot_only.contains(Options::Index));Trait Implementations§
impl Copy for Options
Auto Trait Implementations§
impl Freeze for Options
impl RefUnwindSafe for Options
impl Send for Options
impl Sync for Options
impl Unpin for Options
impl UnwindSafe for Options
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>
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>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
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>
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>
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>
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>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
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 rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
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);