Struct germinate::Seed[][src]

pub struct Seed<'a> { /* fields omitted */ }
Expand description

A Seed is responsible for parsing the template string, loading the values, and optionally making the replacements via the germinate method

Implementations

Create a new Seed with the given template string

Adds a custom loader to allow users of the library to add their own value sources

Example

use germinate::{Seed, Loader};

struct LanguageLoader {}

#[async_trait::async_trait]
impl Loader for LanguageLoader {
    async fn load(&self, key: &str) -> anyhow::Result<String> {
        // Add your logic for loading the value here

        Ok(match key {
            "go" => String::from("Go"),
            _ => String::from("Rust"),
        })
    }
}

#[tokio::main]
async fn main() {
    std::env::set_var("NAME", "John");

    let mut seed = Seed::new("Hi %env:NAME%, Welcome to %language:rust%! Say goodbye to %language:go%...");
    seed.add_custom_loader("language".into(), Box::new(LanguageLoader{}));
    let output = seed.germinate().await.unwrap();

    assert_eq!(String::from("Hi John, Welcome to Rust! Say goodbye to Go..."), output);
}

Parses the template string and generates a HashMap of key value replacements, loading the value for each replacement as it goes. If it finds a template string with a custom source without a related loader, it will return an error. It will also return an error if a value fails to load

Examples

#[tokio::main]
async fn main() {
    std::env::set_var("NAME", "John");

    let mut seed = germinate::Seed::new("Hi %env:NAME%, Welcome to Rust!");
    let replacements = seed.parse().await.unwrap();

    assert_eq!(replacements.get("%env:NAME%").unwrap(), &String::from("John"));
}

The germinate is a wrapper around the parse function which follows up by actually making the replacements in the template string and returning the result.

Examples

#[tokio::main]
async fn main() {
    std::env::set_var("NAME", "John");

    let mut seed = germinate::Seed::new("Hi %env:NAME%, Welcome to Rust!");
    let output = seed.germinate().await.unwrap();

    assert_eq!(String::from("Hi John, Welcome to Rust!"), output);
}

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

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

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

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

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

Performs the conversion.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

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

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

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

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