Something wrong with below code (I'm absolutely new in Rust...):
let function = move |req: &mut Request| -> IronResult<Response> {
let router = req.extensions.get::<Router>().expect("Unable to get router");
println!("router:{:?}", router);
let val = router.find("param").expect("param is required");
...
}
...
router.get("/page", function, "handler");
...
While executed (site/page?param=0), got below traces. Looks like 'router' is empty. What's is wrong ?
router:Params { map: {} }
thread '<unnamed>' panicked at 'param is required', src/main.rs:xx:xx
So, I decided to use params::{Params} and almost reached my goal, but...
let function = move |req: &mut Request| -> IronResult<Response> {
use params::{Params};
use crate::iron::Plugin;
let map = req.get_ref::<Params>().unwrap();
let val1 = map.find(&["param1"]).expect("param1 is required");
let val2 = map.find(&["param2"]).expect("param2 is required");
let cmd = format!("cmd={:?}{:?}\n", val1, val2);
println!("{}", cmd);
...
};
I get cmd="1600","100" instead of wanted cmd=1600,100. Can't use format!({}) due to compilation error:
error[E0277]: `params::Value` doesn't implement `std::fmt::Display`
`params::Value` cannot be formatted with the default formatter
Tried different string/number conversions but failed since val1, val2 are not strings but params::Value. Tried remove quotes from cmd string but also failed. Any idea of simple solution?
The params of the
Routerare those specified in the URL pattern e.g. if you define a routeGET /:querythen you'll get aqueryparam storing the corresponding path segment.The querystring you access via
Request::url.