我正在尝试通过创建 REST API 并将帖子提交到数据库来对评论示例进行简单扩展。我正在创建处理程序本身范围之外的连接,我假设这是我的问题所在。我只是不确定如何解决它。
这是 post 处理程序的代码:
server.get("/comments", middleware! {
let mut stmt = conn.prepare("SELECT * FROM comment").unwrap();
let mut iter = stmt.query_map(&[], |row| {
Comment { id: row.get(0), author: row.get(1), text: row.get(2) }
}).unwrap();
let mut out: Vec<Comment> = Vec::new();
for comment in iter {
out.push(comment.unwrap());
}
json::encode(&out).unwrap()
});
这是我得到的错误:
<nickel macros>:22:50: 22:66 error: the trait `core::marker::Sync` is not implemented for the type `core::cell::UnsafeCell<rusqlite::InnerConnection>` [E0277]
我认为错误是因为我创建了实例,然后尝试在闭包中使用它,并且一旦我的主函数完成,该变量可能会被销毁。