Rust serde_json::value::rawValue выдает ошибки «привязка к черте… `r2d2_postgres::postgres::types::FromSql` не выполняется»

#postgresql #rust #serde #r2d2

#postgresql #Ржавчина #serde #r2d2

Вопрос:

Я использую 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",amp;[]))
        .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, поэтому, вероятно, мне не хватает какой-то концепции о том, как это исправить.

Комментарии:

1. Должен быть в состоянии использовать Json <amp;RawValue> или что-то в этом роде