aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-07-09 03:14:26 -0400
committerJesse Luehrs <doy@tozt.net>2019-07-09 03:14:26 -0400
commit2510f46e32ade9f7c3f6d2546e8a7338f4c27cd7 (patch)
treeb9cfd00badd10e9805e676ad2c3ea638c032694e /src
parent4f593b410b7d66a8f5e2d0e970f59854938926a7 (diff)
downloadnbsh-old-2510f46e32ade9f7c3f6d2546e8a7338f4c27cd7.tar.gz
nbsh-old-2510f46e32ade9f7c3f6d2546e8a7338f4c27cd7.zip
use context instead of map_err for futures and streams
Diffstat (limited to 'src')
-rw-r--r--src/eval.rs14
-rw-r--r--src/repl.rs5
-rw-r--r--src/state.rs2
-rw-r--r--src/tui.rs9
4 files changed, 11 insertions, 19 deletions
diff --git a/src/eval.rs b/src/eval.rs
index 549650d..af3de9e 100644
--- a/src/eval.rs
+++ b/src/eval.rs
@@ -1,4 +1,4 @@
-use futures::stream::Stream as _;
+use snafu::futures01::StreamExt as _;
use snafu::ResultExt as _;
#[derive(Debug, snafu::Snafu)]
@@ -56,19 +56,11 @@ impl Eval {
dyn futures::stream::Stream<Item = CommandEvent, Error = Error>
+ Send,
> = if let Ok(s) = builtin_stream {
- Box::new(s.map_err(move |e| Error::BuiltinExecution {
- cmd: cmd.clone(),
- source: e,
- }))
+ Box::new(s.context(BuiltinExecution { cmd }))
} else {
let process_stream = crate::process::spawn(&cmd, &args);
match process_stream {
- Ok(s) => {
- Box::new(s.map_err(move |e| Error::ProcessExecution {
- cmd: cmd.clone(),
- source: e,
- }))
- }
+ Ok(s) => Box::new(s.context(ProcessExecution { cmd })),
Err(e) => {
return Err(e).context(Command { cmd });
}
diff --git a/src/repl.rs b/src/repl.rs
index aa80132..cac6649 100644
--- a/src/repl.rs
+++ b/src/repl.rs
@@ -1,5 +1,6 @@
use futures::future::{Future as _, IntoFuture as _};
use futures::stream::Stream as _;
+use snafu::futures01::{FutureExt as _, StreamExt as _};
use snafu::ResultExt as _;
use std::io::Write as _;
@@ -53,7 +54,7 @@ fn read() -> impl futures::future::Future<Item = String, Error = Error> {
crate::readline::readline("$ ", true)
.into_future()
.flatten()
- .map_err(|e| Error::Read { source: e })
+ .context(Read)
}
fn eval(
@@ -63,7 +64,7 @@ fn eval(
crate::eval::eval(line)
.into_future()
.flatten_stream()
- .map_err(|e| Error::Eval { source: e })
+ .context(Eval)
}
fn print(event: &crate::eval::CommandEvent) -> Result<()> {
diff --git a/src/state.rs b/src/state.rs
index 652911c..b9707c0 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -136,7 +136,7 @@ impl futures::future::Future for State {
.unwrap()
.future
.poll()
- .map_err(|e| Error::Eval { source: e })?
+ .context(Eval)?
{
futures::Async::Ready(Some(event)) => match event {
crate::eval::CommandEvent::CommandStart(
diff --git a/src/tui.rs b/src/tui.rs
index 88a169d..b7af752 100644
--- a/src/tui.rs
+++ b/src/tui.rs
@@ -1,5 +1,6 @@
use futures::future::{Future as _, IntoFuture as _};
use futures::sink::Sink as _;
+use snafu::futures01::FutureExt as _;
use std::io::Write as _;
#[derive(Debug, snafu::Snafu)]
@@ -38,10 +39,8 @@ pub fn tui() {
.and_then(move |line| {
let (res, req) = futures::sync::oneshot::channel();
w.send(crate::state::StateEvent::Line(idx, line, res))
- .map_err(|e| Error::Sending { source: e })
- .and_then(|_| {
- req.map_err(|e| Error::Receiving { source: e })
- })
+ .context(Sending)
+ .and_then(|_| req.context(Receiving))
})
.then(move |res| match res {
// successful run or empty input means prompt again
@@ -72,7 +71,7 @@ fn read() -> impl futures::future::Future<Item = String, Error = Error> {
crate::readline::readline("$ ", true)
.into_future()
.flatten()
- .map_err(|e| Error::Read { source: e })
+ .context(Read)
}
fn error(e: &Error) {