Я пытался реализовать спокойный сервер, который возвращает некоторые данные JSONed из базы данных в ответе HTTP get. Я использую ящик rustful. Пока я могу получить данные, но я не мог понять, как вернуть их в тело ответа.Возвращаемое значение - это «неразрешенное имя»
#[macro_use]
extern crate rustful;
extern crate rustc_serialize;
extern crate postgres;
use std::error::Error;
use rustful::{Server, Context, Response, TreeRouter, Log, Handler};
use rustful::context::ExtJsonBody;
use postgres::{Connection, SslMode};
#[derive(RustcEncodable,RustcDecodable)]
struct Coord {
lat: f64,
long: f64,
expr: String
}
fn get(context: Context, response: Response) {
let conn = Connection::connect("postgresql://postgres:[email protected]", &SslMode::None).unwrap();
let stmt = conn.prepare("SELECT latitude,longitude,expiry FROM coord LIMIT 1").unwrap();
let result = stmt.query(&[]).unwrap();
for row in result {
let coord = Coord {
lat: row.get(0),
long: row.get(1),
expr: row.get(2)
};
println!("Latitude: {}\nLongitude: {}\nExpiry: {}", coord.lat, coord.long, coord.expr);
}
response.send(format!("{:?}", coord.lat))
}
struct HandlerFn(fn(Context, Response));
impl Handler for HandlerFn {
fn handle_request(&self, context: Context, response: Response) {
self.0(context, response);
}
}
fn main() {
let server = Server {
host: 8080.into(),
handlers: insert_routes! {
TreeRouter::new() => {
Get: HandlerFn(get)
}
},
..Server::default()
}.run();
match server {
Ok(_server) => {},
Err(e) => println!("Cannot start server: {}", e.description())
}
}
Код в настоящее время терпит неудачу с этой ошибкой:
src/main.rs:40:35: 40:40 error: unresolved name `coord`
src/main.rs:40 response.send(format!("{:?}", coord.lat))
^~~~~
note: in expansion of format_args!
<std macros>:2:26: 2:57 note: expansion site
<std macros>:1:1: 2:61 note: in expansion of format!
src/main.rs:40:19: 40:45 note: expansion site
error: aborting due to previous error
Добро пожаловать в переполнение стека! Пожалуйста, прочитайте о создании [MCVE] (/ help/mcve), который поможет выявить проблему как для вас самих, так и для потенциальных ответчиков. В этом случае у вас довольно много кода, который является вспомогательным для вашей проблемы. – Shepmaster
Спасибо, сделаю :) – Stygian