feat: use rustyline for the repl
[?]
Mar 9, 2021, 9:49 PM
PUWH566OS7GW6KXTNQEH7VXRGYABORD7MASW5I7X3ANPLQW4MO4QCDependencies
- [2]
F7HABNXPfeat: initial patch
Change contents
- replacement in src/main.rs at line 1
use std::io::{stdin, stdout, Write};use nom::{IResult, character::complete::one_of};use nom::{character::complete::{digit1, one_of},IResult,};use rustyline::{error::ReadlineError::{Eof, Interrupted},Editor,}; - replacement in src/main.rs at line 11
digit1(input) - replacement in src/main.rs at line 19
loop {print!("ferencz> ");stdout().flush()?;let mut buffer: String = String::new();stdin().read_line(&mut buffer)?;println!("Now you are a {}", buffer);let mut rl = Editor::<()>::new();if let Err(_) = rl.load_history("history.txt") {println!("Previous history was not loaded.");}Ok(loop {let readline = rl.readline("Ferencz> ");match readline {Ok(line) => {rl.add_history_entry(&line);println!("Line: {}", line);}Err(Interrupted) => {println!("CTRL-C");break;}Err(Eof) => {println!("CTRL-D");break;}Err(err) => {println!("Error: {:}", err);break;}}})}#[cfg(test)]mod test {use super::*;#[test]fn test() {assert_eq!(number("23"), Ok(("", "23"))); - replacement in Cargo.toml at line 10
nom = "6"[2.725]rustyline = "8" - edit in Cargo.lock at line 28
name = "cc"version = "1.0.67"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd"[[package]] - edit in Cargo.lock at line 38
[[package]]name = "dirs-next"version = "2.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"dependencies = ["cfg-if","dirs-sys-next",] - edit in Cargo.lock at line 50
name = "dirs-sys-next"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"dependencies = ["libc","redox_users","winapi",][[package]]name = "endian-type"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"[[package]] - edit in Cargo.lock at line 71
"rustyline", - edit in Cargo.lock at line 75
name = "fs2"version = "0.4.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"dependencies = ["libc","winapi",][[package]] - edit in Cargo.lock at line 91
name = "getrandom"version = "0.2.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"dependencies = ["cfg-if","libc","wasi",][[package]] - edit in Cargo.lock at line 115
name = "libc"version = "0.2.88"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "03b07a082330a35e43f63177cc01689da34fbffa0105e1246cf0311472cac73a"[[package]]name = "log"version = "0.4.14"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"dependencies = ["cfg-if",][[package]] - edit in Cargo.lock at line 134
[[package]]name = "nibble_vec"version = "0.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"dependencies = ["smallvec",] - edit in Cargo.lock at line 145
name = "nix"version = "0.20.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a"dependencies = ["bitflags","cc","cfg-if","libc",][[package]] - edit in Cargo.lock at line 174
[[package]]name = "radix_trie"version = "0.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"dependencies = ["endian-type","nibble_vec",] - edit in Cargo.lock at line 186
name = "redox_syscall"version = "0.2.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9"dependencies = ["bitflags",][[package]]name = "redox_users"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"dependencies = ["getrandom","redox_syscall",][[package]]name = "rustyline"version = "8.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b9e1b597fcd1eeb1d6b25b493538e5aa19629eb08932184b85fef931ba87e893"dependencies = ["bitflags","cfg-if","dirs-next","fs2","libc","log","memchr","nix","radix_trie","scopeguard","smallvec","unicode-segmentation","unicode-width","utf8parse","winapi",][[package]] - edit in Cargo.lock at line 232
[[package]]name = "scopeguard"version = "1.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"[[package]]name = "smallvec"version = "1.6.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" - edit in Cargo.lock at line 258
name = "unicode-segmentation"version = "1.7.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"[[package]]name = "unicode-width"version = "0.1.8"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"[[package]]name = "utf8parse"version = "0.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372"[[package]] - edit in Cargo.lock at line 280
[[package]]name = "wasi"version = "0.10.2+wasi-snapshot-preview1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - edit in Cargo.lock at line 288
name = "winapi"version = "0.3.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"dependencies = ["winapi-i686-pc-windows-gnu","winapi-x86_64-pc-windows-gnu",][[package]]name = "winapi-i686-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"[[package]]name = "winapi-x86_64-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"[[package]]