Crates.io | barley-proc |
lib.rs | barley-proc |
version | 0.2.0 |
source | src |
created_at | 2023-05-17 14:54:29.647842 |
updated_at | 2023-05-25 09:46:31.917447 |
description | A proc-macro crate for Barley |
homepage | https://github.com/panthios/barley |
repository | https://github.com/panthios/barley |
max_upload_size | |
id | 867016 |
size | 21,120 |
barley-proc
This crate provides the procedural macros for the barley workflow engine.
All functions from barley-proc
are re-exported with barley-runtime
. Since the runtime is essential anyway, this crate should not be imported directly. Use the barley-runtime
crate instead.
use barley_runtime::*;
use async_trait::async_trait;
use std::sync::Arc;
use tokio::sync::RwLock;
#[barley_action]
#[derive(Default)]
struct Print {
message: String
}
impl Print {
fn new(message: String) -> Self {
// `Default` is required to set the internal
// barley state.
Self { message, ..Default::default() }
}
}
#[barley_action]
#[async_trait]
impl Action for Print {
async fn check(&self, ctx: Arc<RwLock<Context>>) -> Result<bool> {
Ok(false)
}
async fn perform(&mut self, ctx: Arc<RwLock<Context>>) -> Result<Option<ActionOutput>> {
println!("{}", self.message);
Ok(None)
}
async fn rollback(&mut self, ctx: Arc<RwLock<Context>>) -> Result<()> {
Ok(())
}
}