Skip to content

Commit 6c27993

Browse files
committed
First version Restate Rust SDK docs
1 parent 391d841 commit 6c27993

File tree

8 files changed

+763
-21
lines changed

8 files changed

+763
-21
lines changed

examples/my_service.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use restate_sdk::prelude::*;
2+
3+
#[restate_sdk::service]
4+
pub trait MyService {
5+
async fn my_handler(greeting: String) -> Result<String, HandlerError>;
6+
}
7+
8+
pub struct MyServiceImpl;
9+
10+
impl MyService for MyServiceImpl {
11+
async fn my_handler(&self, ctx: Context<'_>, greeting: String) -> Result<String, HandlerError> {
12+
Ok(format!("{greeting}!"))
13+
}
14+
}
15+
16+
#[tokio::main]
17+
async fn main() {
18+
tracing_subscriber::fmt::init();
19+
HttpServer::new(Endpoint::builder().bind(MyServiceImpl.serve()).build())
20+
.listen_and_serve("0.0.0.0:9080".parse().unwrap())
21+
.await;
22+
}

examples/my_virtual_object.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
use std::ops::Shl;
2+
use restate_sdk::prelude::*;
3+
4+
#[restate_sdk::object]
5+
pub trait MyVirtualObject {
6+
async fn my_handler(name: String) -> Result<String, HandlerError>;
7+
#[shared]
8+
async fn my_concurrent_handler(name: String) -> Result<String, HandlerError>;
9+
}
10+
11+
pub struct MyVirtualObjectImpl;
12+
13+
impl MyVirtualObject for MyVirtualObjectImpl {
14+
async fn my_handler(
15+
&self,
16+
ctx: ObjectContext<'_>,
17+
greeting: String,
18+
) -> Result<String, HandlerError> {
19+
Ok(format!("Greetings {} {}", greeting, ctx.key()))
20+
}
21+
async fn my_concurrent_handler(
22+
&self,
23+
ctx: SharedObjectContext<'_>,
24+
greeting: String,
25+
) -> Result<String, HandlerError> {
26+
Ok(format!("Greetings {} {}", greeting, ctx.key()))
27+
}
28+
}
29+
30+
#[tokio::main]
31+
async fn main() {
32+
tracing_subscriber::fmt::init();
33+
HttpServer::new(
34+
Endpoint::builder()
35+
.bind(MyVirtualObjectImpl.serve())
36+
.build(),
37+
)
38+
.listen_and_serve("0.0.0.0:9080".parse().unwrap())
39+
.await;
40+
}

examples/my_workflow.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
use restate_sdk::prelude::*;
2+
3+
#[restate_sdk::workflow]
4+
pub trait MyWorkflow {
5+
async fn run(req: String) -> Result<String, HandlerError>;
6+
#[shared]
7+
async fn interact_with_workflow() -> Result<(), HandlerError>;
8+
}
9+
10+
pub struct MyWorkflowImpl;
11+
12+
impl MyWorkflow for MyWorkflowImpl {
13+
async fn run(&self, ctx: WorkflowContext<'_>, req: String) -> Result<String, HandlerError> {
14+
// implement workflow logic here
15+
16+
Ok(String::from("success"))
17+
}
18+
async fn interact_with_workflow(&self, ctx: SharedWorkflowContext<'_>) -> Result<(), HandlerError> {
19+
// implement interaction logic here
20+
// e.g. resolve a promise that the workflow is waiting on
21+
22+
Ok(())
23+
}
24+
}
25+
26+
#[tokio::main]
27+
async fn main() {
28+
tracing_subscriber::fmt::init();
29+
HttpServer::new(Endpoint::builder().bind(MyWorkflowImpl.serve()).build())
30+
.listen_and_serve("0.0.0.0:9080".parse().unwrap())
31+
.await;
32+
}

0 commit comments

Comments
 (0)