Ich versuche, pädagogische Client-Server-Anwendung mit Rust und Eisen zu implementieren. Ich bin auf das Verhalten gestoßen, das ich nicht verstehen kann. Hier ist der Code:Iron :: new() :: http() fängt stdin
fn main() {
Iron::new(hello_world).http("localhost:3000").unwrap();
let mut input = String::new();
io::stdin().read_line(&mut input)
.expect("Failed to read line");
println!("You entered: {}", &input)
}
fn hello_world(_: &mut Request) -> IronResult<Response> {
Ok(Response::with((status::Ok, "Hello World!")))
}
Wenn ich es laufen und versuchen, etwas über die Tastatur eingeben, die Linie Sie gemacht haben: Ein Text wird nicht angezeigt.
Aber nachdem ich diese Zeile geändert:
Iron::new(hello_world).http("localhost:3000").unwrap();
mit diesem:
let listener = Iron::new(hello_world).http("localhost:3000").unwrap();
I String bekam Sie gemacht haben: Einige Text auf meiner Konsole. So scheint es zu funktionieren. Aber jetzt habe ich eine Warnung vor unbenutzter Variable. Dieses Verhalten ist verwirrend.
Kann jemand erklären, warum das tatsächlich passiert?
Denn wenn man den Hörer fallen wird es blockieren bis der Server stirbt, wenn Sie ihn in eine Variable verschieben, wird er blockiert, wenn die Variable gelöscht wird (zB Endsumme) - Sie können die Variable mit "_" voranstellen (l ike '_listener'), um nicht verwendete Warnungen zum Schweigen zu bringen. –
Danke dir. Und danke für den netten Hack mit '_listener'. Ich wusste es nicht. –