Skip to content

Commit 8c02edc

Browse files
docs: show custom event handler usage (#1154)
1 parent 34e669c commit 8c02edc

1 file changed

Lines changed: 19 additions & 22 deletions

File tree

README.md

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -554,37 +554,34 @@ See the [examples directory](https://github.com/aws/aws-lambda-rust-runtime/tree
554554
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:
555555

556556
```rust,no_run
557-
use serde::{Serialize, Deserialize};
558-
use serde_json::json;
559-
use std::error::Error;
557+
use lambda_runtime::{service_fn, Error, LambdaEvent};
558+
use serde::{Deserialize, Serialize};
560559
561-
#[derive(Serialize, Deserialize)]
560+
#[derive(Debug, Deserialize)]
562561
pub struct NewIceCreamEvent {
563-
pub flavors: Vec<String>,
562+
pub flavors: Vec<String>,
564563
}
565564
566-
#[derive(Serialize, Deserialize)]
565+
#[derive(Serialize)]
567566
pub struct NewIceCreamResponse {
568-
pub flavors_added_count: usize,
567+
pub flavors_added_count: usize,
569568
}
570569
571-
fn main() -> Result<(), Box<Error>> {
572-
let flavors = json!({
573-
"flavors": [
574-
"Nocciola",
575-
"抹茶",
576-
"आम"
577-
]
578-
});
579-
580-
let event: NewIceCreamEvent = serde_json::from_value(flavors)?;
581-
let response = NewIceCreamResponse {
582-
flavors_added_count: event.flavors.len(),
583-
};
584-
serde_json::to_string(&response)?;
585-
570+
#[tokio::main]
571+
async fn main() -> Result<(), Error> {
572+
lambda_runtime::run(service_fn(handler)).await?;
586573
Ok(())
587574
}
575+
576+
async fn handler(
577+
event: LambdaEvent<NewIceCreamEvent>,
578+
) -> Result<NewIceCreamResponse, Error> {
579+
println!("Received ice cream event: {:?}", event.payload);
580+
581+
Ok(NewIceCreamResponse {
582+
flavors_added_count: event.payload.flavors.len(),
583+
})
584+
}
588585
```
589586

590587
## Supported Rust Versions (MSRV)

0 commit comments

Comments
 (0)