Wie lese ich einen einzelnen String von der Standardeingabe?
Es ist nicht einfach Instruktion auf dem Empfang einer Zeichenkette als variable in der std::io Dokumentation, aber ich dachte, dieser sollte funktionieren:
use std::io;
let line = io::stdin().lock().lines().unwrap();
Aber ich bin immer diese Fehlermeldung:
src\main.rs:28:14: 28:23 error: unresolved name `io::stdin`
src\main.rs:28 let line = io::stdin.lock().lines().unwrap();
^~~~~~~~~
Warum?
Ich bin mit einem nächtlichen Rost v1.0.
- Haben Sie Lesen Sie Der Rost Buch der Abschnitt über die standard-Eingabe?
- Ja, aber ich dachte, 'old_io' bedeutet, es ist ein veraltetes feature. Ist es anders herum?
- Die Dokumentation, die Sie sich beziehen, für das erste alpha-release. Das Modul dann aufgerufen
io
umbenannt wurdeold_io
nach, dass release, und es ist in der Tat auf dem Weg, aber noch nicht vollständig ersetzt durch die neueio
Modul. Zuerst müssen Sie herausfinden, wo Sie stehen: Sie Sind mit 1.0.0-alpha oder sind Sie auf der tracking-nightlies?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der code, den Sie brauchen, um zu tun, was Sie versuchen, (keine Kommentare auf, wenn es ist ein guter Weg, um darüber zu gehen:
Wenn Sie möchten mehr Kontrolle darüber, wo die Linie ist zu Lesen, die Sie verwenden können,
Stdin::read_line
. Dieser akzeptiert eine&mut String
zum Anhängen an. Mit diesem können Sie sicherstellen, dass der string hat einen ausreichend großen Puffer, oder Anhängen an einer bestehenden string:read_line()
Beispiel, wäre es nicht mehr angemessen zu verwenden.ok().expect()
Muster für den Rückgabewert? Sie sind nicht etwas zu tun mit derunwrap()
ped Wert.unwrap
eineResult
, wird der Fehler-Wert wird als die panic-Meldung. Mit Ihrem Beispiel, würden Sie brauchen, um eine Fehlermeldung fürexpect
, die möglicherweise besser geeignet für die Ihren Fall.