Attribute Macro ruex::prelude::main

source ·
#[main]
Expand description

Composition root for application entry point.

Inspired by #[tokio::main]

Implements dependency injection composition root pattern for application entry point.

Examples

#[ruex::main {
    backtrace = {
        level = Short,
    },
    log = {
        level = Info,
        output = Stdout,
    }
}]
fn main() {}

Config

Configuration fields can be omitted.

struct MainConfig {
    backtrace: BacktraceConfig,
    log: LogConfig,
}

struct LogConfig {
    level: LogLevel,
    output: LogOutput,
}

enum LogOutput {
    #[default]
    StdOut,
    Syslog,
    File(String),
}

enum LogLevel {
    Trace,
    Debug,
    #[default]
    Info,
    Warn,
    Error,
}

struct BacktraceConfig {
    level: BactraceLevel,
}

enum BactraceLevel {
    None,
    #[default]
    Short,
    Full,
}