diff --git a/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs b/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs index 825006e0..bf93ae5c 100644 --- a/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs +++ b/rust/tutorials/tour-of-restate-rust/src/part4/cart_object.rs @@ -11,6 +11,9 @@ pub(crate) trait CartObject { async fn checkout() -> Result; #[name = "expireTicket"] async fn expire_ticket(ticket_id: String) -> Result<(), HandlerError>; + + #[shared] + async fn list() -> Result; } pub struct CartObjectImpl; @@ -100,4 +103,18 @@ impl CartObject for CartObjectImpl { Ok(()) } + + async fn list( + &self, + ctx: SharedObjectContext<'_> + ) -> Result { + let mut tickets = ctx + .get::>>("tickets") + .await? + .unwrap_or_default() + .into_inner(); + + let tickets_vec: Vec = tickets.into_iter().collect(); + Ok(tickets_vec.join(",")) + } }