Struct StaticDir

Source
#[non_exhaustive]
pub struct StaticDir { pub roots: Vec<PathBuf>, pub chunk_size: Option<u64>, pub include_dot_files: bool, pub auto_list: bool, pub compressed_variations: HashMap<CompressionAlgo, Vec<String>>, pub defaults: Vec<String>, pub fallback: Option<String>, /* private fields */ }
Expand description

Handler that serves static files from directories.

This handler can serve files from one or more directory paths, with support for directory listing, compressed file variants, and default files.

§Examples

use salvo_core::prelude::*;
use salvo_serve_static::StaticDir;

let router = Router::new()
    .push(Router::with_path("static/<**>")
        .get(StaticDir::new(["assets", "static"])
            .defaults("index.html")
            .auto_list(true)));

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§roots: Vec<PathBuf>

Static root directories to search for files

§chunk_size: Option<u64>

Chunk size for file reading (in bytes)

§include_dot_files: bool

Whether to include dot files (files/directories starting with .)

§auto_list: bool

Whether to automatically list directories when default file isn’t found

§compressed_variations: HashMap<CompressionAlgo, Vec<String>>

Map of compression algorithms to file extensions for compressed variants

§defaults: Vec<String>

Default file names to look for in directories (e.g., “index.html”)

§fallback: Option<String>

Fallback file to serve when requested file isn’t found

Implementations§

Source§

impl StaticDir

Source

pub fn new<T>(roots: T) -> StaticDir
where T: StaticRoots,

Create new StaticDir.

Source

pub fn include_dot_files(self, include_dot_files: bool) -> StaticDir

Sets include_dot_files.

Source

pub fn exclude<F>(self, filter: F) -> StaticDir
where F: Fn(&str) -> bool + Send + Sync + 'static,

Exclude files.

The filter function returns true to exclude the file.

Source

pub fn auto_list(self, auto_list: bool) -> StaticDir

Sets auto_list.

Source

pub fn compressed_variation<A>(self, algo: A, exts: &str) -> StaticDir

Sets compressed_variations.

Source

pub fn defaults(self, defaults: impl IntoVecString) -> StaticDir

Sets defaults.

Source

pub fn fallback(self, fallback: impl Into<String>) -> StaticDir

Sets fallback.

Source

pub fn chunk_size(self, size: u64) -> StaticDir

During the file chunk read, the maximum read size at one time will affect the access experience and the demand for server memory.

Please set it according to your own situation.

The default is 1M.

Trait Implementations§

Source§

impl Handler for StaticDir

Source§

fn handle<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, req: &'life1 mut Request, _depot: &'life2 mut Depot, res: &'life3 mut Response, _ctrl: &'life4 mut FlowCtrl, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, StaticDir: 'async_trait,

Handle http request.
Source§

fn arc(self) -> ArcHandler
where Self: Sized,

Wrap to ArcHandler.
Source§

fn hooped<H>(self) -> HoopedHandler
where H: Handler, Self: Sized,

Wrap to HoopedHandler.
Source§

fn hoop<H>(self, hoop: H) -> HoopedHandler
where H: Handler, Self: Sized,

Hoop this handler with middleware.
Source§

fn hoop_when<H, F>(self, hoop: H, filter: F) -> HoopedHandler
where Self: Sized, H: Handler, F: Fn(&Request, &Depot) -> bool + Send + Sync + 'static,

Hoop this handler with middleware. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

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

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

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

Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

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

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

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 T
where 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.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SendTarget for T
where T: Handler + Send,

Source§

async fn call(self, req: Request) -> Response

Send request to target, such as Router, Service, Handler.
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T