restate-sdk

Crates.iorestate-sdk
lib.rsrestate-sdk
version0.3.0
sourcesrc
created_at2024-07-16 03:00:19.905371
updated_at2024-09-10 07:10:26.322263
descriptionRestate SDK for Rust
homepage
repositoryhttps://github.com/restatedev/sdk-rust
max_upload_size
id1304546
size188,566
owners (github:restatedev:owners)

documentation

README

Documentation crates.io Examples Discord Twitter

Restate Rust SDK

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.

Community

Using the SDK

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;
}

Logging

The SDK uses tokio's tracing crate to generate logs. Just configure it as usual through tracing_subscriber to get your logs.

Versions

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 βœ… βœ…

Contributing

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!

Building the SDK locally

Prerequisites:

To build and test the SDK:

just verify

Releasing

You need the Rust toolchain. To verify:

just verify

To release we use cargo-release:

cargo release <VERSION> --exclude test-services --workspace
Commit count: 0

cargo fmt