6 releases

0.3.2 Dec 5, 2024
0.3.1 Dec 5, 2024
0.3.0 Sep 10, 2024
0.2.1 Aug 22, 2024
0.1.0-alpha.0 Jul 16, 2024

#324 in Asynchronous

Download history 31/week @ 2024-10-26 61/week @ 2024-11-02 79/week @ 2024-11-09 141/week @ 2024-11-16 108/week @ 2024-11-23 317/week @ 2024-11-30 108/week @ 2024-12-07 75/week @ 2024-12-14 30/week @ 2024-12-21 15/week @ 2024-12-28 82/week @ 2025-01-04 67/week @ 2025-01-11 111/week @ 2025-01-18 79/week @ 2025-01-25 133/week @ 2025-02-01 90/week @ 2025-02-08

422 downloads per month

MIT license

155KB
2.5K SLoC

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

Dependencies

~13–24MB
~457K SLoC