微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rust serde_json::value::RawValue 给出错误“特征绑定......`r2d2_postgres::postgres::types::FromSql<'_>` 不满足”

如何解决Rust serde_json::value::RawValue 给出错误“特征绑定......`r2d2_postgres::postgres::types::FromSql<'_>` 不满足”

我使用 r2d2_postgres 运行原始 sql 并直接在 Actix 响应中返回结果。

我需要在编译时使用动态数据、类型和未知的列/数据类型等运行原始 sql。为此,我遇到了 serde_json::value::RawValue

它指出:“RawValue 可用于将部分负载的解析推迟到以后,或者在负载的一部分只需要逐字传输到不同的输出对象的情况下完全避免解析它。”

https://docs.serde.rs/serde_json/value/struct.RawValue.html

我基本上想完全避免解析它,而是将其发送到 Actix 客户端。

这是我的代码

let mut conn = pool.get().expect("Couldn't get db connection from pool");
let result = web::block(move || conn.query("select jsonb_agg(t) from (select * from useraccountview) t",&[]))
        .await;

match result {
        Ok(result) => {
            let foo : serde_json::value::RawValue = result[0].get(0);
            HttpResponse::Ok().content_type("application/json").json(foo)
        },Err(e) => HttpResponse::NotAcceptable().body(e.to_string())
    }

这给了我 2 个错误

error[E0277]: the trait bound `serde_json::value::RawValue: Fromsql<'_>` is not satisfied
   --> src/main.rs:188:63
    |
188 |             let foo : serde_json::value::RawValue = result[0].get(0);
    |                                                               ^^^ the trait `Fromsql<'_>` is not implemented for `serde_json::value::RawValue`



error[E0277]: the size for values of type `str` cannot be kNown at compilation time
   --> src/main.rs:188:17
    |
188 |             let foo : serde_json::value::RawValue = result[0].get(0);
    |                 ^^^ doesn't have a size kNown at compile-time

我对 Rust 很陌生,所以我可能缺少一些关于如何解决这个问题的概念。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。