use async_trait::async_trait;

#[async_trait]
pub trait RunnableNode {
    // TODO: Get inputs/outputs to determine whether we can skip running this task

    // TODO: Status

    // TODO: Runtime attributes passed in here would be nice, so a task can change depending
    //          on the attributes
    async fn run(&self) -> anyhow::Result<()>;
}
