From 4e38a038ad19bb37cf8dbb3e6bf2c46e89177f1e Mon Sep 17 00:00:00 2001 From: Floze <88098863+floze-the-genius@users.noreply.github.com> Date: Sun, 19 Jul 2026 20:33:49 +0400 Subject: [PATCH] docs: show custom event handler usage --- README.md | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 4b893b4f..e4dc1ac1 100644 --- a/README.md +++ b/README.md @@ -554,37 +554,34 @@ See the [examples directory](https://github.com/aws/aws-lambda-rust-runtime/tree To serialize and deserialize events and responses, we suggest using the [`serde`](https://github.com/serde-rs/serde) library. To receive custom events, annotate your structure with Serde's macros: ```rust,no_run -use serde::{Serialize, Deserialize}; -use serde_json::json; -use std::error::Error; +use lambda_runtime::{service_fn, Error, LambdaEvent}; +use serde::{Deserialize, Serialize}; -#[derive(Serialize, Deserialize)] +#[derive(Debug, Deserialize)] pub struct NewIceCreamEvent { - pub flavors: Vec, + pub flavors: Vec, } -#[derive(Serialize, Deserialize)] +#[derive(Serialize)] pub struct NewIceCreamResponse { - pub flavors_added_count: usize, + pub flavors_added_count: usize, } -fn main() -> Result<(), Box> { - let flavors = json!({ - "flavors": [ - "Nocciola", - "抹茶", - "आम" - ] - }); - - let event: NewIceCreamEvent = serde_json::from_value(flavors)?; - let response = NewIceCreamResponse { - flavors_added_count: event.flavors.len(), - }; - serde_json::to_string(&response)?; - +#[tokio::main] +async fn main() -> Result<(), Error> { + lambda_runtime::run(service_fn(handler)).await?; Ok(()) } + +async fn handler( + event: LambdaEvent, +) -> Result { + println!("Received ice cream event: {:?}", event.payload); + + Ok(NewIceCreamResponse { + flavors_added_count: event.payload.flavors.len(), + }) +} ``` ## Supported Rust Versions (MSRV)