Skip to main content

DynRustEmbed

Trait DynRustEmbed 

Source
pub trait DynRustEmbed {
    // Required methods
    fn get(&self, file_path: &str) -> Option<EmbeddedFile>;
    fn names(&self) -> Vec<Cow<'static, str>>;
}
Expand description

A dyn-compatible (“object safe”) counterpart to RustEmbed.

RustEmbed cannot be used as dyn RustEmbed because its methods have no self parameter (they are associated functions on a marker type). This trait exists for callers who need to store or pass around an embedded directory as a trait object, e.g. Box<dyn DynRustEmbed>.

It is blanket-implemented for every type that implements RustEmbed, so there is nothing to derive or implement manually:

use rust_embed::{DynRustEmbed, Embed};

#[derive(Embed)]
#[folder = "examples/public/"]
struct Asset;

fn main() {
    let embed: Box<dyn DynRustEmbed> = Box::new(Asset);
    let _ = embed.get("index.html");
}

Required Methods§

Source

fn get(&self, file_path: &str) -> Option<EmbeddedFile>

Get an embedded file and its metadata. See RustEmbed::get.

Source

fn names(&self) -> Vec<Cow<'static, str>>

Returns the file paths in the folder. See RustEmbed::iter.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§