From b717c864ace36057335820dd57e71805c143f86d Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 13 Jun 2021 20:20:27 +0800 Subject: [PATCH] feat: add restlyline --- src/main.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main.rs b/src/main.rs index 6d543f9..1da1e94 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,8 @@ use futures_util::{StreamExt, SinkExt}; use tokio_tungstenite::tungstenite::Message; use tokio::sync::mpsc::channel; use url::Url; +use rustyline::Editor; +use rustyline::error::ReadlineError; #[tokio::main] async fn main() { @@ -46,6 +48,31 @@ async fn connect_to_and_loop(url: &Url) -> XResult<()> { } }); + let t = std::thread::spawn(|| { + let mut rl = Editor::<()>::new(); + loop { + let readline = rl.readline("ws $ "); + match readline { + Ok(line) => { + rl.add_history_entry(line.as_str()); + println!("Input line: {}", line); + }, + Err(ReadlineError::Interrupted) => { + println!("CTRL-C"); + break + }, + Err(ReadlineError::Eof) => { + println!("CTRL-D"); + break + }, + Err(err) => { + println!("Error: {:?}", err); + break + } + } + } + }); + loop { let next = ws_read.next().await; match next { @@ -79,4 +106,7 @@ async fn connect_to_and_loop(url: &Url) -> XResult<()> { } } } + + t.join().unwrap(); + Ok(()) }