Crate rain_task

Source
Expand description

A library to easily write custom Rain tasks in Rust.

See README.md and the project page for more information.

§Example

#[macro_use] // For register_task! if you want to use it
extern crate rain_task;

use rain_task::*;
use std::io::Write;

// A task with a single input and single output
fn task_hello(_ctx: &mut Context, input: &DataInstance, output: &mut Output) -> TaskResult<()> {
    write!(output, "Hello {}", input.get_str()?)?;
    Ok(())
}

fn main() {
    let mut s = Executor::new("greeter"); // The executor type name
    // Use a macro to register the task.
    // [I O] here specifies the type and order of parameters.
    register_task!(s, "hello", [I O], task_hello);
    s.run(); // Runs the executor event loop
}

Macros§

register_task
Register a given task function with complex arguments with the executor.
register_task_make_call
Internal macro used in register_task!.

Structs§

Context
State of the processed Task instance and its specification.
DataInstance
One instance of input DataObject.
DataObjectId
ID type for task objects.
Executor
The executor event loop and the set of registered tasks.
ObjectInfo
ObjectSpec
Output
One instance of output DataObject.
Resources
TaskError
A string error for the task functions.
TaskId
ID type for task objects.
TaskInfo
TaskSpec
TaskSpecInput

Enums§

DataType

Constants§

MAX_MSG_SIZE
Maximal protocol message size (128 MB)
MEM_BACKED_LIMIT
Size limit for memory-backed objects. Larger blobs get written to the filesystem.
MSG_PROTOCOL
Current protocol code name and magic string

Type Aliases§

TaskFn
Alias type for a executor task function with arbitrary number of inputs and outputs.
TaskResult
A Result with TaskError.
UserValue