rustyline-async/examples/test-printing.rs

51 lines
968 B
Rust

#![allow(dead_code)]
use std::io::Write;
use rustyline_async::{Readline, ReadlineEvent};
#[derive(Debug)]
struct BigStruct {
bytes: Vec<u8>,
name: String,
number: usize,
}
#[async_std::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let (mut rl, mut stdout) = Readline::new("> ".to_owned()).unwrap();
let thingy = BigStruct {
bytes: vec![1; 20],
name: "Baloney Shmalony".to_owned(),
number: 60,
};
simplelog::WriteLogger::init(
log::LevelFilter::Debug,
simplelog::Config::default(),
stdout.clone(),
)
.unwrap();
loop {
match rl.readline().await {
Ok(ReadlineEvent::Line(_)) => {
writeln!(stdout, "{:?}", thingy)?;
log::info!("{:?}", thingy);
}
Ok(ReadlineEvent::Eof) => {
writeln!(stdout, "Exiting...")?;
break;
}
Ok(ReadlineEvent::Interrupted) => writeln!(stdout, "^C")?,
Err(err) => {
writeln!(stdout, "Received err: {:?}", err)?;
break;
}
}
}
rl.flush()?;
Ok(())
}