Futures v0.3 upgrade (#1344)

* Upgrade futures, async-stream, and futures_codec

These were the last three dependencies on futures-preview. `nu` itself
is now fully dependent on `futures@0.3`, as opposed to `futures-preview`
alpha.

Because the update to `futures` from `0.3.0-alpha.19` to `0.3.0` removed
the `Stream` implementation of `VecDeque` ([changelog][changelog]), most
commands that convert a `VecDeque` to an `OutputStream` broke and had to
be fixed.

The current solution is to now convert `VecDeque`s to a `Stream` via
`futures::stream::iter`. However, it may be useful for `futures` to
create an `IntoStream` trait, implemented on the `std::collections` (or
really any `IntoIterator`). If something like this happends, it may be
worthwhile to update the trait implementations on `OutputStream` and
refactor these commands again.

While upgrading `futures_codec`, we remove a custom implementation of
`LinesCodec`, as one has been added to the library. There's also a small
refactor to make the stream output more idiomatic.

[changelog]: https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md#030---2019-11-5

* Upgrade sys & ps plugin dependencies

They were previously dependent on `futures-preview`, and `nu_plugin_ps`
was dependent on an old version of `futures-timer`.

* Remove dependency on futures-timer from nu

* Update Cargo.lock

* Fix formatting

* Revert fmt regressions

CI is still on 1.40.0, but the latest rustfmt v1.41.0 has changes to the
`val @ pattern` syntax, causing the linting job to fail.

* Fix clippy warnings
This commit is contained in:
Alex van de Sandt
2020-02-05 22:46:48 -05:00
committed by GitHub
parent ba1b67c072
commit e3be849c2a
32 changed files with 163 additions and 187 deletions

View File

@ -15,15 +15,13 @@ nu-protocol = { path = "../nu-protocol", version = "0.9.0" }
nu-source = { path = "../nu-source", version = "0.9.0" }
nu-errors = { path = "../nu-errors", version = "0.9.0" }
futures-preview = { version = "=0.3.0-alpha.19", features = ["compat", "io-compat"] }
futures-timer = "1.0.3"
futures = { version = "0.3", features = ["compat", "io-compat"] }
futures-timer = "3.0.1"
pin-utils = "0.1.0-alpha.4"
futures-util = "0.3.1"
[dependencies.heim]
version = "0.0.9"
default-features = false
features = ["process", "runtime-polyfill"]
[build-dependencies]

View File

@ -1,4 +1,4 @@
use futures_util::{StreamExt, TryStreamExt};
use futures::{StreamExt, TryStreamExt};
use heim::process::{self as process, Process, ProcessResult};
use heim::units::{information, ratio, Ratio};
use std::usize;

View File

@ -12,7 +12,7 @@ nu-protocol = { path = "../nu-protocol", version = "0.9.0" }
nu-source = { path = "../nu-source", version = "0.9.0" }
nu-errors = { path = "../nu-errors", version = "0.9.0" }
futures-preview = { version = "=0.3.0-alpha.19", features = ["compat", "io-compat"] }
futures = { version = "0.3", features = ["compat", "io-compat"] }
battery = "0.7.5"
futures-util = "0.3.1"