Hi I am a beginner learning Rust and from the book I have I am putting in code into an IDE. When I run the code I get the following error at two places: 'doesn't have a size known at compile-time'
I would really like to understand why I am getting this error and if anyone can help it would be great. Here is the entire code
extern crate urlencoded;
extern crate router;
extern crate iron;
#[macro_use] extern crate mime;
use iron::prelude::*;
use iron::status;
use router::Router;
use std::str::FromStr;
use urlencoded::UrlEncodedBody;
fn get_form(_request:&mut Request) -> IronResult<Response>{
let mut response = Response::new();
response.set_mut(status::Ok);
response.set_mut(mime!(Text/Html; Charset=Utf8));
response.set_mut(r#"
<title>GCD Calculator</title>
<form action="/gcd" method="post">
<inpt type="text" name="n"/>
<input type="text" name="n"/>
<button type="submit">Computer GCD</button>
</form>"#);
Ok(response)
}
fn post_gcd(request: &mut Rerquest) -> IronResult<Response>{
let mut response = Response::new();
let form_data = match request.get_ref::<UrlEncodedBody>(){
Err(e) =>{
response.set_mut(status::BadRequest);
response.set_mut(format!("Error parsing form data: {:?}\n", e));
return Ok(response);
}
Ok(map) => map
};
let unparsed_numbers = match form_data.get("n"){
None => {
response.set_mut(status::BadRequest);
response.set_mut(format!("form data has no 'n' parameter\n"));
return Ok(response);
}
Some(nums) => nums
};
let mut numbers = Vec::new();
for unparsed in unparsed_numbers{
match u64::from_str(&unparsed){
Err(_) => {
response.set_mut(status::BadRequest);
response.set_mut(format!("Value for 'n' parameter not a number: {:?}\n", unparsed));
return Ok(response);
}
Ok(n) => {numbers.push(n);}
}
}
let mut d = numbers[0];
for m in &numbers[1..]{
d = gcd(d, *m);
}
response.set_mut(stats::Ok);
response.set_mut(mime!(Text/Html; Charset=Utf8));
response.set_mut(format!("The greatest common divisor of the numbers {:?} is <b>{}</b>\n",numbers, d));
Ok(response)
}
fn main() {
let mut router = Router::new();
router.get("/", get_form, "root");
router.post("/gcd",post_gcd, "gcd");
println!("Serving on http://localhost:3000...");
Iron::new(get_form).http("localhost:3000").unwrap();
}