无法访问Iron中的参数,因为不满足特征绑定插件::插件<iron :: request>

时间:2016-07-14 09:37:57

标签: rust iron

我正在探索Iron Web框架的功能。据我所知,Iron核心没有一个API可以处理 HTTP参数所以我试图使用params crate。

error: the trait bound `params::Params: plugin::Plugin<iron::Request<'_, '_>>` is not satisfied [E0277]
    let map = req.get_ref::<Params>().unwrap();
                  ^~~~~~~
help: run `rustc --explain E0277` to see a detailed explanation

我还没有找到这个bug的踪迹,也没有办法解决这个问题。

extern crate iron;
extern crate params;

use iron::prelude::*;
use iron::status;
use params::*; //{self, Params, Value};

fn handle_user(req: &mut Request) -> IronResult<Response> {
    use params::{Params, Value};

    let map = req.get_ref::<Params>().unwrap();

    match map.find(&["user", "name"]) {
        Some(&Value::String(ref name)) if name == "Marie" => {
            Ok(Response::with((iron::status::Ok, "Welcome back, Marie!")))
        },
        _ => Ok(Response::with(iron::status::NotFound)),
    }
}

fn main() {   
    Iron::new(handle_user).http("localhost:2330").unwrap();
}

图书馆的版本

iron = "0.4.0"
params = "0.2.2"

1 个答案:

答案 0 :(得分:3)

params 0.2.2 crate depends on iron ^0.3,因此您需要将铁依赖版本更改为0.3

使用这样的插件箱时,您必须确保版本完全匹配。有时也可能需要cargo update

在Rust中,从同一个箱子的多个版本中获取的相同结构或特征被视为完全不同。它通常会导致错误,例如“Pixel预期,但找到Pixel”,或者在您的情况下缺少特征实施。