2021-08-25 14:30:27 -05:00
|
|
|
use std::io::{self, BufRead, Write};
|
2021-08-11 20:24:42 -05:00
|
|
|
|
2021-08-25 14:30:27 -05:00
|
|
|
use crate::io::Streams;
|
|
|
|
use crate::database::Database;
|
|
|
|
|
|
|
|
fn read_line<I: BufRead>(mut r#in: I) -> io::Result<String> {
|
2021-08-11 20:24:42 -05:00
|
|
|
let mut pre_n = String::new();
|
2021-08-25 14:30:27 -05:00
|
|
|
r#in.read_line(&mut pre_n)?;
|
2021-08-11 20:24:42 -05:00
|
|
|
Ok(pre_n)
|
|
|
|
}
|
|
|
|
|
2021-08-25 14:30:27 -05:00
|
|
|
pub fn ask<D: Database, I: BufRead, O: Write, E: Write>(streams: &mut Streams<D, I, O, E>, question: &str) -> io::Result<bool> {
|
|
|
|
write!(streams.out, "{} [y/N] ", question)?;
|
|
|
|
streams.out.flush()?;
|
2021-08-11 20:24:42 -05:00
|
|
|
|
2021-08-25 14:30:27 -05:00
|
|
|
Ok(read_line(&mut streams.r#in)?.to_lowercase().starts_with('y'))
|
2021-08-11 20:24:42 -05:00
|
|
|
}
|