如何序列化Template :: render的上下文

时间:2019-06-20 14:37:20

标签: json rust handlebars.js rust-diesel rust-rocket

我正在尝试将“把手”与“火箭”和“柴油”一起使用。不幸的是我没有使这种组合起作用。

首先,我使用this tutorial构建一个简单的rest-API。然后,我尝试不使用数据库连接来测试车把模板。这部分效果很好。

接下来,我尝试使用数据库连接使用相同的模板。如果对模板的上下文部分使用与API中相同的方法,则会得到我不理解的编译器消息。如果REST API使用来自Serde的JSON,我希望输出应为Serialize

功能故障:

#[get("/<id>")]
pub fn index(id: i32, connection: DbConn) -> Template
{
    let context = people::repository::index(id, &connection).map(|person| Json(person)).map_err(|error| error_status(error));
    Template::render("index", &context)
};

结构:

#[derive(Queryable, AsChangeset, Serialize, Deserialize)]
#[table_name = "people"]
pub struct Person {
    pub id: i32,
    pub first_name: String,
    pub last_name: String,
    pub age: i32,
    pub profession: String,
    pub salary: i32,
};

数据库查询:

pub fn index(id: i32, connection: &PgConnection ) -> QueryResult<Person> {
    people::table.find(id).get_result::<Person>(connection)
}

我希望编译成功。错误消息如下:

[E0277] the trait bound `rocket_contrib::json::Json<people::Person>: people::_IMPL_DESERIALIZE_FOR_Person::_serde::Serialize` is not satisfied. 
[Note] the trait `people::_IMPL_DESERIALIZE_FOR_Person::_serde::Serialize` is not implemented for `rocket_contrib::json::Json<people::Person>`
[E0277] the trait bound `rocket::http::Status: people::_IMPL_DESERIALIZE_FOR_Person::_serde::Serialize` is not satisfied. 
[Note] the trait `people::_IMPL_DESERIALIZE_FOR_Person::_serde::Serialize` is not implemented for `rocket::http::Status`

0 个答案:

没有答案