Compare commits

..

1 Commits
v0.4.0 ... main

Author SHA1 Message Date
b78423377c
docs: add examples
All checks were successful
continuous-integration/drone/push Build is passing
this is to show how we can use closures in the mad component context. It isn't super pretty because of the async closure, so we need to show the slighly complicated syntax

Signed-off-by: kjuulh <contact@kjuulh.io>
2024-08-07 17:09:52 +02:00
2 changed files with 30 additions and 2 deletions

View File

@ -41,3 +41,11 @@ async fn main() -> anyhow::Result<()> {
}
```
## Examples
Can be found (here)[crates/mad/examples]
- basic
- fn
- signals
- error_log

View File

@ -10,7 +10,7 @@ impl mad::Component for WaitServer {
Some("WaitServer".into())
}
async fn run(&self, cancellation: CancellationToken) -> Result<(), mad::MadError> {
async fn run(&self, _cancellation: CancellationToken) -> Result<(), mad::MadError> {
let millis_wait = rand::thread_rng().gen_range(500..3000);
tracing::debug!("waiting: {}ms", millis_wait);
@ -28,9 +28,11 @@ async fn main() -> anyhow::Result<()> {
.with_max_level(Level::TRACE)
.init();
let item = "some item".to_string();
mad::Mad::builder()
.add(WaitServer {})
.add_fn(|cancel| async move {
.add_fn(|_cancel| async move {
let millis_wait = 50;
tracing::debug!("waiting: {}ms", millis_wait);
@ -40,6 +42,24 @@ async fn main() -> anyhow::Result<()> {
Ok(())
})
.add_fn(move |_cancel| {
// I am an actual closure
let item = item.clone();
async move {
let _item = item;
let millis_wait = 50;
tracing::debug!("waiting: {}ms", millis_wait);
// Simulates a server running for some time. Is normally supposed to be futures blocking indefinitely
tokio::time::sleep(std::time::Duration::from_millis(millis_wait)).await;
Ok(())
}
})
.run()
.await?;