-
Notifications
You must be signed in to change notification settings - Fork 369
Closed
Description
I got below error when building the lambda_http example code
use lambda_http::{lambda, IntoResponse, Request, RequestExt};
use lambda_runtime::{Context, error::HandlerError};
fn main() {
lambda!(hello)
}
fn hello(
request: Request,
_ctx: Context
) -> Result<impl IntoResponse, HandlerError> {
Ok(format!(
"hello {}",
request
.query_string_parameters()
.get("name")
.unwrap_or_else(|| "stranger")
))
}
according to issue #87 , I chose to fetch lambda_http crate from git address
the dependencies in Cargo.toml are:
lambda_runtime = "0.2"
lambda_http = {git = "https://github.com/awslabs/aws-lambda-rust-runtime"}
error message:
type mismatch in function arguments
expected signature of `fn(http::request::Request<lambda_http::body::Body>, lambda_runtime_core::context::Context) -> _`
note: required because of the requirements on the impl of `lambda_http::Handler<_>` for `fn(http::request::Request<lambda_http::body::Body>, lambda_runtime_core::context::Context) -> std::result::Result<impl lambda_http::response::IntoResponse, lambda_runtime_errors::HandlerError> {hello}`
note: required by `lambda_http::start`rustc(E0631)
<::lambda_http::lambda macros>(1, 27): expected signature of `fn(http::request::Request<lambda_http::body::Body>, lambda_runtime_core::context::Context) -> _`
main.rs(8, 1): found signature of `fn(http::request::Request<lambda_http::body::Body>, lambda_runtime_core::context::Context) -> _`
It will not receive such error If I change the lambda_http version to 0.1.0
But in a more practical project, serde::Deserialize (#87 ) will be introduced, so I cannot choose 0.1.0
Is there any workaround? or is there any example to return the http response via lambda_runtime crate only (I would prefer this way, because lambda
macro in runtime crate allow custom Error type which implements Fail + LambdaErrorExt + Display
(though still not convenient, i.e. #94 ), while lambda
in http crate allow HandlerError
only)? Thanks in advance
Metadata
Metadata
Assignees
Labels
No labels