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>
This commit is contained in:
Kasper Juul Hermansen 2024-08-07 17:09:45 +02:00
parent 1446f4c3cf
commit b78423377c
Signed by: kjuulh
GPG Key ID: D85D7535F18F35FA
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?;