Remove 'into_async', use 'async_stdin' instead
This commit is contained in:
parent
7d1d424c8a
commit
b10a24e112
31
src/input.rs
31
src/input.rs
|
@ -1,8 +1,6 @@
|
|||
use std::io::{self, Read, Write};
|
||||
use std::thread;
|
||||
use std::sync::mpsc;
|
||||
|
||||
use {IntoRawMode, AsyncReader};
|
||||
use IntoRawMode;
|
||||
|
||||
#[cfg(feature = "nightly")]
|
||||
use std::io::{Chars, CharsError};
|
||||
|
@ -87,11 +85,6 @@ pub trait TermRead {
|
|||
/// EOT and ETX will abort the prompt, returning `None`. Newline or carriage return will
|
||||
/// complete the password input.
|
||||
fn read_passwd<W: Write>(&mut self, writer: &mut W) -> io::Result<Option<String>>;
|
||||
|
||||
/// Turn the reader into a asynchronous reader.
|
||||
///
|
||||
/// This will spawn up another thread listening for event, buffering them in a mpsc queue.
|
||||
fn into_async(self) -> AsyncReader where Self: Send;
|
||||
}
|
||||
|
||||
impl<R: Read> TermRead for R {
|
||||
|
@ -119,28 +112,6 @@ impl<R: Read> TermRead for R {
|
|||
|
||||
Ok(Some(passwd))
|
||||
}
|
||||
|
||||
fn into_async(self) -> AsyncReader where R: Send + 'static {
|
||||
let (send, recv) = mpsc::channel();
|
||||
|
||||
thread::spawn(move || {
|
||||
let mut reader = self;
|
||||
loop {
|
||||
let mut buf = [0];
|
||||
if send.send(if let Err(k) = reader.read(&mut buf) {
|
||||
Err(k)
|
||||
} else {
|
||||
Ok(buf[0])
|
||||
}).is_err() {
|
||||
return;
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
AsyncReader {
|
||||
recv: recv,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
Loading…
Reference in New Issue