Crates.io | restate-sdk |
lib.rs | restate-sdk |
version | 0.3.0 |
source | src |
created_at | 2024-07-16 03:00:19.905371 |
updated_at | 2024-09-10 07:10:26.322263 |
description | Restate SDK for Rust |
homepage | |
repository | https://github.com/restatedev/sdk-rust |
max_upload_size | |
id | 1304546 |
size | 188,566 |
Restate is a system for easily building resilient applications using distributed durable async/await. This repository contains the Restate SDK for writing services using Rust.
Add Restate and Tokio as dependencies:
[dependencies]
restate-sdk = "0.1"
tokio = { version = "1", features = ["full"] }
Then you're ready to develop your Restate service using Rust:
use restate_sdk::prelude::*;
#[restate_sdk::service]
trait Greeter {
async fn greet(name: String) -> HandlerResult<String>;
}
struct GreeterImpl;
impl Greeter for GreeterImpl {
async fn greet(&self, _: Context<'_>, name: String) -> HandlerResult<String> {
Ok(format!("Greetings {name}"))
}
}
#[tokio::main]
async fn main() {
// To enable logging/tracing
// tracing_subscriber::fmt::init();
HttpServer::new(
Endpoint::builder()
.with_service(GreeterImpl.serve())
.build(),
)
.listen_and_serve("0.0.0.0:9080".parse().unwrap())
.await;
}
The SDK uses tokio's tracing
crate to generate logs.
Just configure it as usual through tracing_subscriber
to get your logs.
The Rust SDK is currently in active development, and might break across releases.
The compatibility with Restate is described in the following table:
Restate Server\sdk-rust | 0.0/0.1/0.2 | 0.3 |
---|---|---|
1.0 | β | β |
1.1 | β | β |
Weβre excited if you join the Restate community and start contributing! Whether it is feature requests, bug reports, ideas & feedback or PRs, we appreciate any and all contributions. We know that your time is precious and, therefore, deeply value any effort to contribute!
Prerequisites:
To build and test the SDK:
just verify
You need the Rust toolchain. To verify:
just verify
To release we use cargo-release:
cargo release <VERSION> --exclude test-services --workspace