首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构特征错误:类型参数数错误:预期1,查找0

结构特征错误:类型参数数错误:预期1,查找0
EN

Stack Overflow用户
提问于 2020-05-30 21:00:02
回答 1查看 701关注 0票数 2

我对锈菌是如何工作的概念有点陌生,即使在试验了几个月之后。我正在用R2D2 (0.8.0)和Rocket (0.4.4) + Rocket_cors (0.5.2)编写一个with服务器。

火箭允许你把它的结构输入到一个状态池中,所以每次有人发送请求时,我都不需要初始化Postgres服务器。下面是代码:

代码语言:javascript
复制
struct ConnectionPool<M: r2d2::ManageConnection> {
    val: r2d2::Pool<M>
}

#[post("/upload", format = "application/json", data = "<data>")]
fn upload(data: Data, state: rocket::State<ConnectionPool>) {
    if data.peek_complete() {
        println!("All of the data: {:?}", str::from_utf8(data.peek()).unwrap());
    }
    //data.stream_to_file(env::temp_dir().join("upload.txt"))
    //    .map(|n| n.to_string())
    //    .map_err(Debug)
}

显然,这只是代码的一个片段,但是r2d2::ConnectionPool需要一个类型标识符:如果我忽略了需求(在上面的代码片段中的第4行),就会给出这个错误:

代码语言:javascript
复制
wrong number of type arguments: expected 1, found 0

expected 1 type argumentrustc(E0107)
main.rs(45, 44): expected 1 type argument

但是,当我尽力通过更新代码来解决这个问题时:

代码语言:javascript
复制
fn upload(data: Data, state: rocket::State<ConnectionPool>) {

    |
    v

fn upload(data: Data, state: rocket::State<ConnectionPool<r2d2::ManageConnection>>) {

我知道这个错误:

代码语言:javascript
复制
the size for values of type `(dyn r2d2::ManageConnection + 'static)` cannot be known at compilation time

doesn't have a size known at compile-time

help: the trait `std::marker::Sized` is not implemented for `(dyn r2d2::ManageConnection + 'static)`
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-30 21:07:47

r2d2::ManageConnection是一种特质。与其重复特征名称,还需要传递一个实现该特性的具体类型。因为您正在使用Postgres,所以您可能需要:

代码语言:javascript
复制
fn upload(data: Data, state: rocket::State<ConnectionPool<PostgresConnectionManager>>)

或者,如果您希望保持代码数据库不可知论,您可以使该方法在连接类型上成为通用方法,并让调用方决定:

代码语言:javascript
复制
fn upload<M: r2d2::ManageConnection>(data: Data, state: rocket::State<ConnectionPool<M>>)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62108619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档