4 releases
new 0.1.0 | Feb 10, 2025 |
---|---|
0.0.3 |
|
0.0.2 | Dec 8, 2024 |
0.0.1 | Dec 1, 2024 |
0.0.0 | Nov 28, 2024 |
#206 in Configuration
49 downloads per month
Used in 4 crates
52KB
830 lines
scuffle-bootstrap
[!WARNING]
This crate is under active development and may not be stable.
A utility crate for creating binaries.
Refer to Global
, Service
, and main
for more information.
Usage
use std::sync::Arc;
/// Our global state
struct Global;
// Required by the signal service
impl scuffle_signal::SignalConfig for Global {}
impl scuffle_bootstrap::global::GlobalWithoutConfig for Global {
async fn init() -> anyhow::Result<Arc<Self>> {
Ok(Arc::new(Self))
}
}
/// Our own custom service
struct MySvc;
impl scuffle_bootstrap::service::Service<Global> for MySvc {
async fn run(self, global: Arc<Global>, ctx: scuffle_context::Context) -> anyhow::Result<()> {
println!("running");
// Do some work here
// Wait for the context to be cacelled by the signal service
ctx.done().await;
Ok(())
}
}
// This generates the main function which runs all the services
scuffle_bootstrap::main! {
Global {
scuffle_signal::SignalSvc,
MySvc,
}
}
License
This project is licensed under the MIT or Apache-2.0 license. You can choose between one of them if you use this work.
SPDX-License-Identifier: MIT OR Apache-2.0
Dependencies
~4–11MB
~108K SLoC