我是Rust的新手。我有一个lambda_http Request对象,我想以字符串的形式获取Body的文本。
我正在阅读docs on Body,但对Rust来说太新了,无法理解我在看什么。可能我需要以某种方式使用Text
属性?
当前代码:
async fn process_request(request: Request) -> Result<impl IntoResponse, std::convert::Infallible> {
let body = request.body();
let my_string = body.to_string();
if let Err(e) = write_to_dynamodb(&my_string).await {
eprintln!("Error: {}", DisplayErrorContext(e));
}
}
这给了我错误:
let my_string = body.to_string();
| ^^^^^^^^^ method cannot be called on `&lambda_http::Body` due to unsatisfied trait bounds
我做错了什么,我应该如何阅读文档?
2条答案
按热度按时间odopli941#
因为
Body
derefs到&[u8]
,所以使用std::str::from_utf8()
(如果需要String
而不是&str
,可以调用to_owned()
):cl25kdpy2#
在你链接的文档中,它看起来像是一个枚举。如果你想把它作为一个字符串,你首先必须检查枚举是否是文本,如下所示: