https://github.com/fnproject/fdk-rust
An experimental Function Development Kit for the Rust language
https://github.com/fnproject/fdk-rust
crate fdk fn-fdk fnproject functions rust serverless
Last synced: 12 days ago
JSON representation
An experimental Function Development Kit for the Rust language
- Host: GitHub
- URL: https://github.com/fnproject/fdk-rust
- Owner: fnproject
- License: apache-2.0
- Created: 2017-10-18T23:03:52.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-08-13T05:31:32.000Z (almost 4 years ago)
- Last Synced: 2025-04-02T15:39:24.770Z (about 2 months ago)
- Topics: crate, fdk, fn-fdk, fnproject, functions, rust, serverless
- Language: Rust
- Size: 42 KB
- Stars: 12
- Watchers: 30
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FDK: Fn Function Development Kit
###### Disclaimer: This FDK is experimental and is not actively maintained. It is completely functional as of July 2021, but is not supported.
The API provided hides the implementation details of the Fn platform
contract and allows a user to focus on the code and easily implement
function-as-a-service programs.# Usage
The Fn platform offers a
[command line tool](https://github.com/fnproject/fn/blob/master/README.md#quickstart)
to initialize, build and deploy function projects. Follow the `fn` tool
quickstart to learn the basics of the Fn platform.Boilerplate code can be generated using the following command:
`fn init --init-image=fnproject/rust:init`The initializer will actually use cargo and generate a cargo binary project
for the function. It is then possible to specify a dependency as usual.```toml
[dependencies]
fdk = ">=0.2.0"
```# Examples
This is a simple function which greets the name provided as input. This code was generated using the above mentioned boilerplate code command.
```rust
use fdk::{Function, FunctionError, RuntimeContext};
use tokio; // Tokio for handling future.#[tokio::main]
async fn main() -> Result<(), FunctionError> {
if let Err(e) = Function::run(|_: &mut RuntimeContext, i: String| {
Ok(format!(
"Hello {}!",
if i.is_empty() {
"world"
} else {
i.trim_end_matches("\n")
}
))
})
.await
{
eprintln!("{}", e);
}
Ok(())
}
```