Apache OpenWhisk Runtime Rust supports Apache OpenWhisk functions written in Rust

Clone this repo:
  1. dbf466a roll credentials (#35) by David Grove · 22 hours ago master
  2. 26dda15 prep for 1.3.0 release (#34) by David Grove · 7 weeks ago rust1.34@1.3.0
  3. 3fc2eac build actionloop from 1.16@1.18.0 (#33) by David Grove · 8 weeks ago
  4. 89a6381 prep for 1.2.0 release (#32) by David Grove · 6 months ago rust1.34@1.2.0
  5. 700b129 configure more github properties via asf.yaml (#31) by David Grove · 6 months ago

Apache OpenWhisk Runtime for Rust

License Build Status

Give it a try today

To use as a Docker action:

wsk action update myAction my_action.rs --docker openwhisk/action-rust-v1.34

The file my_action.rs looks like:

extern crate serde_json;

use serde_derive::{Deserialize, Serialize};
use serde_json::{Error, Value};

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
struct Input {
    #[serde(default = "stranger")]
    name: String,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
struct Output {
    body: String,
}

fn stranger() -> String {
    "stranger".to_string()
}

pub fn main(args: Value) -> Result<Value, Error> {
    let input: Input = serde_json::from_value(args)?;
    let output = Output {
        body: format!("Hello, {}", input.name),
    };
    serde_json::to_value(output)
}

The action is mainly composed by a main function that accepts a JSON serdes Value as input and returns a Result including a JSON serde Value.

Managing dependencies

If your action needs external dependencies, you need to provide a zip file including your source, and your cargo file with all your dependencies. The folder structure is the following:

|- Cargo.toml
|- src
    |- lib.rs

Here is an example of a Cargo.toml file

[package]
name = "actions"
version = "0.1.0"
authors = ["John Doe <john@doe.domain>"]
edition = "2018"

[dependencies]
serde_json = "1.0"
serde = "1.0"
serde_derive = "1.0"

Once you have all your code zipped in a file with the showed folder structure you can generate your action with the following command:

wsk action create yourAction /full_path_to/yourCode.zip --docker openwhisk/action-rust-v1.34