forester-rs 0.4.1

Workflow framework based on the behavior trees
Documentation
# Runtime engine


The runtime part executes the given tree.

There are 3 major components of the engine part
- Engine itself (Forester)
- Blackboard
- Actions(including ActionKeeper)

The runtime is predominantly synchronous with asynchronous environment for the async actions. 
The blackboard is in-memory for now.

## General api


The entry point is a `ForesterBuilder` that allows to build `Forester` in a safe way.
Also, it is highly customizable.

```rust
 use std::path::PathBuf;
 use forester::tracer::Tracer;
 use forester::runtime::builder::ForesterBuilder;
 use forester::runtime::action::Action;
 use forester::runtime::action::builtin::data::StoreData;
 use forester_rs::runtime::action::builtin::data::StoreData;
 use forester_rs::runtime::builder::ForesterBuilder;
 use forester_rs::tracer::Tracer;
 
fn test(root:PathBuf){
     let mut root = PathBuf::new();

     let mut fb = ForesterBuilder::new();
     fb.main_file("main.tree".to_string());
     fb.root(root);
     fb.register_action("store", Action::sync(StoreData));
     
     fb.tracer(Tracer::default());
     fb.bb_load("db/db.json".to_string());
     let forester = fb.build().unwrap();
     
     let r = forester.run().unwrap();
 }


```