Макросы println!()
и print!()
позволяют печатать строки и переменные с и без завершающей строки, соответственно.Кроме того, функция stdin()
предоставляет функцию для чтения строки пользовательского ввода из STDIN (stdin().read_line(&mut string)
).
Можно с уверенностью предположить, что если макрос print
и функция read_line
Если вы используете последовательно, вы должны быть в состоянии записать вывод и получить ввод в той же строке.Однако, когда это происходит, сегменты выполняются в обратном порядке (сначала читается STDIN, затем печатается оператор).
Вот пример того, что я пытаюсь выполнить:
use std::io;
fn main() {
let mut input = String::new();
print!("Enter a string >> ");
io::stdin().read_line(&mut input).expect("Error reading from STDIN");
}
Желаемый вывод будет (STDIN
представляет точку, в которой пользователь запрашивает ввод, он фактически не печатается):
Enter a string >> STDIN
Фактический вывод:
STDIN
Enter a string >>
С другой стороны, макрос println
не меняет порядок в обратном порядке, хотя по-прежнему существует проблема завершающего перевода строки:
Enter a string >>
STDIN
В Python (3.x) это может быть выполненос одной строкой, потому что функция input
допускает строковый аргумент, предшествующий приглашению STDIN: variable = input("Output string")
Я разделил задачу на макрос print
и функцию read_line
после сбоянайдите решение в документации Rust, которое позволило бы что-то похожее на пример Python.