genja-core-derive
genja-core-derive provides the procedural macros used by genja-core.
Macros
#[genja_task(...)]generatesgenja_core::task::TaskInfoandgenja_core::task::Taskfrom an inherentimplblock.#[derive(DerefMacro)]generatesstd::ops::Dereffor tuple wrappers.#[derive(DerefMutMacro)]generatesstd::ops::DerefMutfor tuple wrappers.
Task Authoring
use genja_task;
use Host;
use ;
;
Deref Wrappers
DerefMacro and DerefMutMacro expect a tuple wrapper with the wrapped value
in field 0 and a DerefTarget trait in scope.
use ;
;
let mut values = Values;
values.push;
assert_eq!;
Limitations
The current supported contract does not include:
- generic task structs
- non-static borrowed task names such as
name: &'a str - subtasks stored as
Option<Arc<dyn Task>>orVec<Arc<dyn Task>> - task trait aliases such as
Arc<dyn CoreTask> - unknown
#[task(...)]helper attributes DerefMacroorDerefMutMacroon non-tuple-wrapper typesDerefMacrowithout an in-scopeDerefTargettrait