2
0
Fork 1
mirror of https://github.com/async-rs/async-std.git synced 2025-01-31 09:45:36 +00:00
Commit graph

1017 commits

Author SHA1 Message Date
Yoshua Wuyts
3ac4575d94
add stream::FusedStream
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-14 02:21:27 +02:00
Yoshua Wuyts
05ba07daf8
stabilize future::{join,try_join}
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-14 01:52:10 +02:00
Yoshua Wuyts
454018ef42
Merge pull request #321 from async-rs/stream_merge
rename stream::join to Stream::merge
2019-10-14 01:46:42 +02:00
Yoshua Wuyts
04342c7b5d
docs
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 22:05:11 +02:00
Yoshua Wuyts
b601bcfcb8
polish
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 21:55:19 +02:00
Yoshua Wuyts
84a148ddae
rename stream::join to Stream::merge
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 21:48:53 +02:00
Wouter Geraedts
8df55dd015 Implemented PathBuf::set_file_name 2019-10-13 21:46:04 +02:00
Wouter Geraedts
54c94b717c Implemented PathBuf::set_extension 2019-10-13 21:41:16 +02:00
Wouter Geraedts
cc417cc001 Implemented PathBuf::push 2019-10-13 21:38:47 +02:00
Wouter Geraedts
07f9e48579 Implemented PathBuf::pop 2019-10-13 21:29:35 +02:00
Wouter Geraedts
71125d5c3b Implemented PathBuf::new 2019-10-13 21:19:23 +02:00
Wouter Geraedts
47ef222dab Implemented PathBuf::into_os_string 2019-10-13 21:13:01 +02:00
Yoshua Wuyts
a2baa1d8e0
rename stream::join to stream::merge
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 21:12:05 +02:00
Wouter Geraedts
80eaa28552 Implemented PathBuf::into_boxed_path 2019-10-13 21:11:42 +02:00
Wouter Geraedts
1bd17f11f2 Implemented PathBuf::as_path 2019-10-13 21:04:47 +02:00
Wouter Geraedts
409a10a8b5 Implemented Path::with_file_name 2019-10-13 20:55:56 +02:00
Wouter Geraedts
3c24b1891b Implemented Path::with_extension 2019-10-13 20:54:08 +02:00
Wouter Geraedts
a17b017e01 Implemented Path::to_string_lossy 2019-10-13 20:49:57 +02:00
Wouter Geraedts
ea43d7fd29 Implemented Path::to_str 2019-10-13 20:46:51 +02:00
Wouter Geraedts
df53a07fc5 Implemented Path::strip_prefix 2019-10-13 20:45:06 +02:00
Wouter Geraedts
942403c52c Implemented Path::starts_with 2019-10-13 20:14:07 +02:00
Wouter Geraedts
d349333a43 Implemented Path::read_link 2019-10-13 20:12:57 +02:00
Wouter Geraedts
89f73d3eda Implemented Path::read_dir 2019-10-13 19:57:46 +02:00
Yoshua Wuyts
fef2e32a3c
cargo fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 19:54:44 +02:00
Yoshua Wuyts
467b64b6e7
doc fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 19:54:44 +02:00
Yoshua Wuyts
296d0d9d31
add print macros
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 19:54:44 +02:00
Yoshua Wuyts
04479b13c3
add io::stdio
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 19:54:44 +02:00
Yoshua Wuyts
33da049717
Merge pull request #311 from async-rs/missing-write-methods
Add Write::write_fmt
2019-10-13 19:53:04 +02:00
Wouter Geraedts
141954d205 Implemented Path::parent 2019-10-13 19:38:33 +02:00
Wouter Geraedts
cc57db02a3 Implemented Path::join 2019-10-13 19:33:55 +02:00
Wouter Geraedts
0c03b92373 Implemented Path::iter 2019-10-13 19:31:17 +02:00
Wouter Geraedts
5d87006006 Implemented Path::is_relative 2019-10-13 19:16:52 +02:00
Wouter Geraedts
df9a01f534 Implemented Path::is_file 2019-10-13 19:15:15 +02:00
Wouter Geraedts
20f58ea1c1 Implemented Path::is_absolute 2019-10-13 19:10:16 +02:00
Wouter Geraedts
3a9597cd32 Implemented Path::has_root 2019-10-13 19:07:12 +02:00
Wouter Geraedts
28e936f6fe Implemented Path::file_stem 2019-10-13 19:05:18 +02:00
Wouter Geraedts
a6e1abecfc Implemented Path::file_name 2019-10-13 19:03:33 +02:00
Wouter Geraedts
a7eaae91ae Implemented Path::extension 2019-10-13 19:00:34 +02:00
Wouter Geraedts
4070833482 Implemented Path::ends_with 2019-10-13 18:58:36 +02:00
Wouter Geraedts
5235cd58be Implemented Path::display 2019-10-13 18:56:26 +02:00
Wouter Geraedts
759e357bea Implemented Path::ancestors 2019-10-13 18:54:36 +02:00
Wouter Geraedts
a57ba7ece0 Implemented Path::into_path_buf 2019-10-13 18:49:57 +02:00
Wouter Geraedts
6c6106a292 Implemented Path::{metadata, symlink_metadata} 2019-10-13 14:17:33 +02:00
Wouter Geraedts
6bbfd039b1 Fixed various tests 2019-10-13 14:11:41 +02:00
Wouter Geraedts
e690b55b18 Implemented fs::metadata and Path::exists 2019-10-13 13:52:58 +02:00
Wouter Geraedts
930b81868d Use std variants of Path and PathBuf internally 2019-10-13 13:46:02 +02:00
Wouter Geraedts
3bd6a9df6d Implemented components 2019-10-13 13:39:12 +02:00
Yoshua Wuyts
28b0ebe83a
Merge pull request #315 from k-nasa/add_flush_to_into_inner
Add BufWriter::into_inner flush
2019-10-13 13:38:22 +02:00
Wouter Geraedts
e27b578c27 WIP init Path and PathBuf async stubs 2019-10-13 13:06:39 +02:00
k-nasa
9d9543c46b refactor: Remove needless main fn 2019-10-13 16:33:02 +09:00
k-nasa
13ff627b09 $cargo fmt 2019-10-13 16:02:02 +09:00
k-nasa
ad156b1fce feat: Add BufWriter::into_inner flush 2019-10-13 15:55:32 +09:00
Yoshua Wuyts
b62e4a1e48
update desc
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 02:39:14 +02:00
Yoshua Wuyts
a1cd76e244
cargo fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 01:36:44 +02:00
Yoshua Wuyts
f3eba1fb48
comments
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 01:35:16 +02:00
Yoshua Wuyts
570dedd712
cleanup
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 01:31:51 +02:00
Yoshua Wuyts
58c3a06a14
init write_fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-13 01:29:17 +02:00
Yoshua Wuyts
483ded0e1c
fix example
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-12 01:38:53 +02:00
Yoshua Wuyts
064fdf020f
Stream::delay
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-12 01:35:41 +02:00
Yoshua Wuyts
30b5ca5851
Merge pull request #296 from stjepang/cleanup-bufwriter
Cleanup BufWriter
2019-10-10 15:51:50 +02:00
Yoshua Wuyts
9c32133f77
Merge pull request #295 from stjepang/cleanup-tosocketaddrs
Cleanup ToSocketAddrs, add more net reexports
2019-10-09 22:39:35 +02:00
Stjepan Glavina
de01a5c5b7 Stabilize io::Cursor 2019-10-09 17:19:34 +02:00
Stjepan Glavina
c890de2c52 Fix failing doc example 2019-10-09 14:49:31 +02:00
Stjepan Glavina
da2335bd57 Cleanup BufWriter 2019-10-09 14:45:40 +02:00
Stjepan Glavina
cbd458b1db Cleanup ToSocketAddrs, add more net reexports 2019-10-09 14:26:14 +02:00
Yoshua Wuyts
fc904a22cd
add task::blocking docs
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-09 13:03:38 +02:00
Yoshua Wuyts
9ab7b1ae6e
Merge pull request #251 from async-rs/blocking-unstable
add an unstable `task::blocking` function
2019-10-09 12:32:44 +02:00
Yoshua Wuyts
460b8af50b
Merge pull request #287 from k-nasa/optimizing_allocations
Optimizing allocations using Stream::size_hint
2019-10-08 17:18:51 +02:00
Yoshua Wuyts
c27623c0fd
cargo fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-08 14:58:39 +02:00
Yoshua Wuyts
647aab819f
impl feedback
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-08 14:55:09 +02:00
Yoshua Wuyts
df15c04f28
spawn_blocking -> blocking
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-08 14:24:37 +02:00
k-nasa
1c798387bf $cargo fmt 2019-10-08 10:50:30 +09:00
k-nasa
9cede7f1e3 refactor: optimizing allocations 2019-10-08 00:06:49 +09:00
Miloš Vučenović
c3e38150e4 Fix uds listener hanging on accept (#272)
* Fix uds listener hanging on accept

UDS listener was hanging because the accept method would return
`Poll::Pending` without registering the task to be awoken in the case
when underlying unix listener returns a WouldBlock that gets converted
to None. This is a hacky fix for this case.

Should fix #248

* Test simulating uds ping-pong server/client

This one should reproduce #248 bug to prevent further regressions.

* Code review fixes
2019-10-07 16:49:42 +02:00
Yoshua Wuyts
5f708f3c4f
Merge pull request #270 from k-nasa/fix_clippy_warn
Fix clippy warning
2019-10-07 15:43:20 +02:00
Yoshua Wuyts
46ffe6ab63
Merge pull request #278 from Michael-J-Ward/fix-readme
Fixes feature flag used in generating the docs in the README
2019-10-07 15:41:04 +02:00
Michael J Ward
75b6c60c67 Corrects a cfg feature declaration in task/mod.rs 2019-10-06 12:00:02 -05:00
bors[bot]
ddee47231a
Merge #282
282: init path submodule as unstable r=yoshuawuyts a=yoshuawuyts

Ref #183.

Similar to #257 this adds the `path` submodule as unstable. Filling in all re-exports from std for module completion. From there the we can build out `Path` and `PathBuf` accordingly. Thanks!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-06 13:10:35 +00:00
Yoshua Wuyts
5b05846fb0
init path submodule as unstable
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-06 13:42:55 +02:00
Fedor Sakharov
49d123c7f9
Fix review nits 2019-10-06 08:32:44 +03:00
Fedor Sakharov
2384df11ed
Apply suggestions from code review
Co-Authored-By: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
2019-10-06 08:27:44 +03:00
k-nasa
1c9d7895df doc: Add FromStream document 2019-10-06 13:08:35 +09:00
Fedor Sakharov
735d604cd1
Adds stream::repeat_with 2019-10-05 22:17:21 +03:00
Sunjay Varma
f968c9a540 rustfmt 2019-10-04 10:09:06 -04:00
Sunjay Varma
2cf3f3f566 FromStream for Arc<[T]> and Rc<[T]> 2019-10-04 10:09:06 -04:00
Sunjay Varma
63c6b1cb63 impl FromStream for Box<[T]> 2019-10-04 10:09:06 -04:00
Sunjay Varma
8e12798038 impl FromStream for Cow<[T]> 2019-10-04 10:09:06 -04:00
Sunjay Varma
b2174576b2 Added FromStream + Extend for LinkedList 2019-10-04 10:09:06 -04:00
Sunjay Varma
bd0808eedd Added FromStream + Extend for BinaryHeap 2019-10-04 10:09:06 -04:00
Sunjay Varma
3160dc8189 Added FromStream + Extend for BTreeSet 2019-10-04 10:09:06 -04:00
Sunjay Varma
6c2ffd7181 Added FromStream + Extend for HashSet 2019-10-04 10:09:06 -04:00
Sunjay Varma
333f35338e Added FromStream and Extend impls for HashMap 2019-10-04 10:09:06 -04:00
Sunjay Varma
de2bc1e83b Added FromStream + Extend for BTreeMap 2019-10-04 10:09:06 -04:00
Sunjay Varma
244c5159df Simplifying + optimizing Extend impl for Vec 2019-10-04 10:09:06 -04:00
Sunjay Varma
ae146afffc FromStream + Extend for VecDeque 2019-10-04 10:09:06 -04:00
Sunjay Varma
6bc3cd0ab2 FromStream for () 2019-10-04 10:08:07 -04:00
bors[bot]
6ab154be7c
Merge #266
266: Changes Extend trait in order to allow streams that yield references r=yoshuawuyts a=sunjay

This is not ready to merge yet. I am mainly opening it so we can discuss a change I had to make to the `Extend` trait. cc @yoshuawuyts @stjepang (and anyone else interested)

## Before this can be merged

- [x] Discuss/Approve changes to `Extend` trait
- [x] Change to using `for_each` after #264 is merged
- [ ] (optional) Wait until a `copied()` method is added to `StreamExt` so that the `&char` impl can be finished.
    - We can also just comment out or remove the impl that uses `copied` until that is added

## Changes To The Extend Trait

While writing the impls of the `Extend` trait for the `String` type, I noticed that certain impls weren't possible because there is no bound on `Extend` that guarantees that the type `A` being yielded from the stream actually lives long enough. We probably didn't run into this earlier because this usually isn't a problem for owned values since the compiler doesn't have to worry about whether they will out live the stream that they come from. I ran into this because of the `Extend` impls that consume streams of references.

The difference between the async `Extend` and the standard library `Extend` is that the async `Extend` returns a value that still references the input stream. That means that if `A` is any reference type, the compiler needs to be able to guarantee that `A` will be around as long as the `Future` returned from the trait method is around.

To fix this, I had to add the bound shown below:

```patch
 pub trait Extend<A> {
     /// Extends a collection with the contents of a stream.
     fn stream_extend<'a, T: IntoStream<Item = A> + 'a>(
         &'a mut self,
         stream: T,
-    ) -> Pin<Box<dyn Future<Output = ()> + 'a>>;
+    ) -> Pin<Box<dyn Future<Output = ()> + 'a>> where A: 'a;
 }
```

This guarantees that each value of type `A` will last at least as long as our boxed future does. The bound had to be in a where clause on the method (and not on the declaration of `A` because the lifetime `'a` isn't in scope at the trait level. I don't think there are any negative consequences of using a where clause like this, but that's why I wanted to bring it up for discussion.

In addition to this, I had to ensure that when writing the `Extend` impls for `String` I appropriately bounded the lifetime of the references from the stream. You can see this in the code below with `where 'b: 'a`.

```rust
impl<'b> Extend<&'b str> for String {
    fn stream_extend<'a, S: IntoStream<Item = &'b str> + 'a>(
        &'a mut self,
        stream: S,
    ) -> Pin<Box<dyn Future<Output = ()> + 'a>> where 'b: 'a {
        //TODO: This can just be: stream.into_stream().for_each(move |s| self.push_str(s))
        Box::pin(stream.into_stream().fold((), move |(), s| self.push_str(s)))
    }
}
```

I should note that initially I tried to make it work with just the impl shown above, without modifying the `Extend` trait. This doesn't work because it would be a stricter bound than what is found in the trait itself. Rust does not allow stricter bounds like that because it could potentially cause unsoundness when dealing with generics.

Of course, I am totally open to being completely wrong in my understanding of how to resolve this issue. I tried to solve the problem with as minimal of a change as possible. Please let me know if you have some better ideas or other suggestions.

## `FromStream` impls for String

The purpose of adding these `Extend` impls is to continue my work from #129 in adding the rest of the `FromStream` impls. The `Extend` impls are used directly to add all of the `FromStream` impls for `String`. Just like with #207 and #265, this adds a new `string` module that is unstable just like the other modules added for `FromStream`.

Co-authored-by: Sunjay Varma <varma.sunjay@gmail.com>
2019-10-04 13:55:33 +00:00
Yoshua Wuyts
5bd6acde46
Merge pull request #263 from montekki/fs-stream-map
Adds stream map combinator
2019-10-03 00:45:27 +02:00
Yoshua Wuyts
50b6d0b15f
Merge pull request #269 from montekki/fs-stream-try-for-each
Adds try_for_each combinator
2019-10-02 19:36:04 +02:00
Sunjay Varma
09a15ef116 Implementing Extend for String in terms of for_each now that that's been added 2019-10-01 22:39:57 -04:00
Sunjay Varma
d6f16b6a17 rustfmt 2019-10-01 22:31:29 -04:00
Sunjay Varma
b878855bc3 **CHANGES** extend trait in order to allow FromStream impls for String 2019-10-01 22:31:29 -04:00
bors[bot]
98c79f4ff9
Merge #255
255: Update futures-preview to 0.3.0-alpha.19 r=skade a=taiki-e

Depends on https://github.com/rustasync/surf/pull/74

Refs:
* https://github.com/rust-lang-nursery/futures-rs/issues/1761
* https://github.com/rust-lang-nursery/futures-rs/pull/1845


cc @skade @stjepang @yoshuawuyts 

Co-authored-by: Taiki Endo <te316e89@gmail.com>
2019-10-01 21:15:00 +00:00
Fedor Sakharov
35ab65fe8e
Fix docs 2019-10-01 20:07:56 +03:00
Fedor Sakharov
f4e2302e7e
Don't use Try trait, use Result instead 2019-10-01 18:08:39 +03:00
Yoshua Wuyts
a97a1fffff
Merge pull request #264 from montekki/fs-stream-for-each
Adds for_each stream combinator
2019-10-01 15:32:36 +02:00
k-nasa
cc21bdf068 $cargo fmt 2019-10-01 18:08:24 +09:00
k-nasa
c31861aa65 rafactor if expression 2019-10-01 18:08:24 +09:00
k-nasa
f08fcd0bbb refactor 2019-10-01 18:08:24 +09:00
k-nasa
87b272f83d refacotr: Refactor match expression 2019-10-01 18:08:24 +09:00
k-nasa
2460f35768 fix: Remove unnecessary Borrowed
Each implements a Copy trait
2019-10-01 18:08:24 +09:00
k-nasa
468cb6348f fix: Remove unnecessary &mut 2019-10-01 18:08:24 +09:00
k-nasa
6253e97717 feat: Add Default trait 2019-10-01 18:08:24 +09:00
Fedor Sakharov
66d38f7856
Adds try_for_each combinator 2019-10-01 10:39:43 +03:00
Sunjay Varma
a05b564486 rustfmt 2019-09-30 20:14:16 -04:00
Sunjay Varma
fb7582bd7a Using Box::pin(...) instead of Pin::from(Box::new(...)) 2019-09-30 19:42:30 -04:00
Sunjay Varma
ab7129cd45 FromStream for Vec<T> in terms of Extend 2019-09-30 19:42:30 -04:00
Sunjay Varma
76b10c4784 FromStream for Option<T> 2019-09-30 19:42:30 -04:00
Fedor Sakharov
6da7efc5ac
Adds for_each stream combinator 2019-09-30 23:45:00 +03:00
Fedor Sakharov
658a16bebe
Adds stream map combinator 2019-09-30 23:17:25 +03:00
Yoshua Wuyts
06862d47c3
update Barrier example to match std::sync::Barrier 1:1
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-29 04:21:48 +02:00
Taiki Endo
f0bf66d0df Update futures-preview to 0.3.0-alpha.19 2019-09-29 00:38:49 +09:00
dignifiedquire
064b44f695 apply cr 2019-09-27 18:49:23 -06:00
Yoshua Wuyts
958d3a9e27
add an unstable task::spawn_blocking function
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-28 01:37:17 +02:00
dignifiedquire
a1aa3f823d finish BufRead 2019-09-27 18:59:30 +02:00
dignifiedquire
dc6c8fb131 feat(io): add stub for BufRead for Take 2019-09-27 16:36:55 +02:00
dignifiedquire
d9aec105a1 feat(io): implement Read::chain 2019-09-27 16:30:38 +02:00
dignifiedquire
e681e297ef feat(io): implement Read::bytes 2019-09-27 15:14:24 +02:00
dignifiedquire
f751ebb8c4 feat(io): implement Read::by_ref 2019-09-27 15:10:40 +02:00
dignifiedquire
75dc819b2f feat(io): implement Read::take 2019-09-27 15:07:05 +02:00
bors[bot]
f6a2393fb5
Merge #241
241: Simplify extension traits using a macro r=yoshuawuyts a=stjepang

This PR would fix #235 

Async methods in our extension traits are now written in the simpler `-> impl Future<Output = T> [ConcreteFuture<Self>]` style. At the same time, doc tests are used even when the `docs` feature is not enabled.

Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
2019-09-27 11:36:32 +00:00
Stjepan Glavina
414fadd6e6 cargo fmt 2019-09-26 23:13:02 -04:00
Yoshua Wuyts
70069e0014
future docs
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-27 01:07:55 +02:00
Stjepan Glavina
8e32fd09f3 Fix a doc test 2019-09-26 14:31:02 -04:00
Stjepan Glavina
ff028bb540 Improve compile times and add comments 2019-09-26 14:21:27 -04:00
Yoshua Wuyts
0b39306b74
fix barrier tests
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-26 17:24:24 +02:00
Yoshua Wuyts
c23cc769ee
mark sync::Barrier as unstable
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-26 16:34:44 +02:00
Stjepan Glavina
79eab9eb9a Simplify extension traits using a macro 2019-09-26 07:46:29 -04:00
dignifiedquire
b77b72d333 feat: implement sync::Barrier
Based on the implementation in https://github.com/tokio-rs/tokio/pull/1571
2019-09-25 21:10:06 +02:00
Yoshua Wuyts
785371cbc4
Merge pull request #187 from async-rs/join-macros
add future::{join,try_join,select,try_select} macros
2019-09-24 22:18:26 +02:00
Yoshua Wuyts
553e48057f
Merge pull request #133 from yoshuawuyts/ready_macro
expose `task::ready!`
2019-09-24 22:16:20 +02:00
Kirill Mironov
63154f5b7a cargo fmt 2019-09-24 16:33:02 +03:00
Kirill Mironov
d23af83189 removed LineWriter and implemented requested changes
Signed-off-by: Kirill Mironov <k.mironov@albato.ru>
2019-09-24 15:59:46 +03:00
Kirill Mironov
9509a056bd Merge branch 'master' into buf-writer 2019-09-24 15:03:55 +03:00
Stjepan Glavina
293d992de1 Fix stream_extend compilation failures 2019-09-24 05:13:02 +02:00
Yoshua Wuyts
a1bc097ffd
Merge pull request #211 from tirr-c/stream-extend
Add stream::Extend
2019-09-23 00:14:29 +02:00
Stjepan Glavina
c62b7a0ba9 Fix warnings 2019-09-22 17:06:00 +02:00
Stjepan Glavina
73d7fea937 Re-export Stream from futures 2019-09-22 16:51:18 +02:00
bors[bot]
33ff41df48
Merge #224
224: Re-export IO traits from futures r=stjepang a=stjepang

Sorry for the big PR!

Instead of providing our own traits `async_std::io::{Read, Write, Seek, BufRead}`, we now re-export `futures::io::{AsyncRead, AsyncWrite, AsyncSeek, AsyncRead}`. While re-exporting we rename them to strip away the "Async" prefix.

The documentation will display the contents of the original traits from the `futures` crate together with our own extension methods. There's a note in the docs saying the extenion methods become available only when `async_std::prelude::*` is imported.

Our extension traits are re-exported into the prelude, but are marked with `#[doc(hidden)]` so they're completely invisible to users.

The benefit of this is that people can now implement traits from `async_std::io` for their types and stay compatible with `futures`. This will also simplify some trait bounds in our APIs - for example, things like `where Self: futures_io::AsyncRead`.

At the same time, I cleaned up some trait bounds in our stream interfaces, but haven't otherwise fiddled with them much.

I intend to follow up with another PR doing the same change for `Stream` so that we re-export the stream trait from `futures`.

Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
2019-09-22 13:50:53 +00:00
Stjepan Glavina
17534cfffc Fuse next() future 2019-09-22 15:19:54 +02:00
Fedor Sakharov
2a2a473889
adds stream::chain combinator 2019-09-22 15:48:12 +03:00
Stjepan Glavina
d55cfb1da8 impl FusedStream for Fuse 2019-09-22 12:44:46 +02:00
Stjepan Glavina
797a6b2d90 Add a missing assert in a doc example 2019-09-22 12:16:35 +02:00
Stjepan Glavina
bfab20da03 Don't re-export ext traits in async_std::io 2019-09-22 12:08:08 +02:00
Fedor Sakharov
89fd473da0
fixes merge artifacts in stream docs 2019-09-22 09:51:54 +03:00
bors[bot]
a8e48b1542
Merge #226
226: adds stream::step_by combinator r=stjepang a=montekki

Ref: #129 
Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.step_by

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-21 16:46:50 +00:00
Fedor Sakharov
376049b51d
Merge branch 'master' into fs-stream-step-by 2019-09-21 19:07:27 +03:00
Fedor Sakharov
bf7121d2d4
adds stream::inspect combinator 2019-09-21 18:19:47 +03:00
Fedor Sakharov
e74c0cec1f
adds stream::step_by combinator 2019-09-21 17:44:57 +03:00
Fedor Sakharov
ea080e7305
Merge branch 'master' into fs-stream-skip-while 2019-09-21 17:42:44 +03:00
bors[bot]
99724497b3
Merge #221
221: adds stream::filter combinator r=stjepang a=montekki

Ref: #129 
Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.filter

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-21 14:22:58 +00:00
bors[bot]
47ce009e10
Merge #222
222: adds stream::skip combinator r=stjepang a=montekki

Ref: #129 
Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.skip

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-21 13:46:11 +00:00
Fedor Sakharov
fdd81e1b2a
Actually export Skip 2019-09-21 16:40:58 +03:00
Fedor Sakharov
e430851bc4
export Filter type 2019-09-21 16:40:01 +03:00
Fedor Sakharov
75da138696
export Skip type 2019-09-21 16:37:30 +03:00
Fedor Sakharov
93463e8df3
export SkipWhile type 2019-09-21 16:34:51 +03:00
Stjepan Glavina
53ce30ae66
Fix async_std imports in metadata.rs 2019-09-21 15:17:49 +02:00
Stjepan Glavina
1fa196812a Fix compilation errors around Stream 2019-09-21 15:05:57 +02:00
Stjepan Glavina
edfa2358a4 Re-export IO traits from futures 2019-09-21 14:30:52 +02:00
Fedor Sakharov
f9f97c43c4
adds stream::skip_while combinator 2019-09-21 15:12:41 +03:00
Fedor Sakharov
570329b176
adds stream::skip combinator 2019-09-21 14:40:25 +03:00
Fedor Sakharov
e7ae10ebee
adds stream::filter combinator 2019-09-21 14:03:17 +03:00
Yoshua Wuyts
fa31c6347e
expose sync::{Arc,Weak}
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-19 18:28:17 +02:00
Yoshua Wuyts
42fac26761
fix unstable display for pin docs
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-19 16:02:28 +02:00
Yoshua Wuyts
7fe6c8a42c
add stream::join
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-19 13:53:36 +02:00
Wonwoo Choi
9c00d0b903 Rename: extend_with_stream => stream_extend 2019-09-19 18:34:31 +09:00
Wonwoo Choi
a5a6dc24c4 Add stream::Extend 2019-09-19 18:33:25 +09:00
bors[bot]
91f002d12b
Merge #209
209: add feature guards for unstable features r=yoshuawuyts a=yoshuawuyts

Makes sure unstable features aren't accidentally usable without their corresponding flags. Thanks!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
2019-09-18 21:53:20 +00:00
Yoshua Wuyts
c533d5f906
implement feedback & fix tests
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-18 21:25:58 +02:00
Stjepan Glavina
bfd7af8775 Rename local.rs -> task_local.rs 2019-09-18 13:59:32 +02:00
Yoshua Wuyts
2964e72b00
Update src/future/timeout.rs
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-18 12:43:34 +02:00
Yoshua Wuyts
6b76fb1308
Update src/future/timeout.rs
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-18 12:43:27 +02:00
Yoshua Wuyts
9a07196402
Update src/stream/double_ended_stream.rs
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-18 12:43:14 +02:00
Yoshua Wuyts
f7ec3f4e2d
Update src/stream/stream/mod.rs
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-18 12:43:06 +02:00
Yoshua Wuyts
bfb16790c3
Update src/stream/from_stream.rs
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-18 12:42:58 +02:00
Yoshua Wuyts
b670600555
Update src/stream/into_stream.rs
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-18 12:42:46 +02:00
bors[bot]
ff20534384
Merge #167
167: add io::cursor r=stjepang a=yoshuawuyts

Adds `io::Cursor` and makes it so `io::prelude::*` behaves the way it does in std (so it can actually be implemented - though this might just have been a bug on my side??).

Ref #131. Thanks!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-18 10:07:41 +00:00
Yoshua Wuyts
488c90c0c4
add feature guards for unstable features
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-18 01:26:04 +02:00
bors[bot]
c8475ca95e
Merge #207
207: Added the ability to collect a stream of results r=yoshuawuyts a=sunjay

As requested here: https://twitter.com/yoshuawuyts/status/1174026374316773377

The standard library has a very useful implementation of `FromIterator` that takes an iterator of `Result<T, E>` values and is able to produce a value of type `Result<Vec<T>, E>`. I asked for this in `async-std` and @yoshuawuyts recommended that I contribute the impl. It turns out that the implementation in the standard library is even more general than I initially thought. It allows any collection that implements `FromIterator` to be collected from an iterator of `Result<T, E>` values. That means that you can collect into `Result<Vec<T>, E>`, `Result<HashSet<T>, E>`, etc.

I wanted to add a similarly generic impl for this crate so we can also support collecting into any collection that implements `FromStream`. 

The implementation for this is based heavily on [what exists in `std`](9150f844e2/src/libcore/result.rs (L1379-L1429)). I made a new `result` module since that's where this impl is in `std`. I still wanted to maintain the conventions of this repo, so I copied the `vec` module that @yoshuawuyts created in #125. Much like in that PR, the new `result` module is private.

There is a doctest in the documentation for `collect` that both teaches that this feature exists and tests that it works in some simple cases.

## Documentation Screenshot

![image](https://user-images.githubusercontent.com/530939/65075935-de89ae00-d965-11e9-9cd6-8b19b694ed3e.png)


Co-authored-by: Sunjay Varma <varma.sunjay@gmail.com>
2019-09-17 22:35:00 +00:00
bors[bot]
4f9e7d39e2
Merge #40
40: Add initial Fuse implementation for Stream r=yoshuawuyts a=spacejam

@matklad does this address your use case?

Co-authored-by: Tyler Neely <tyler.neely@ferrous-systems.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 22:08:18 +00:00
Yoshua Wuyts
aa94d450d6
update stream::fuse
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-18 00:00:30 +02:00
Tyler Neely
7b4bb26c5c
Remove redundant Sized bound
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 23:52:26 +02:00
Tyler Neely
44b3d3dadd
Remove irrelevant example
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 23:50:22 +02:00
Tyler Neely
78c49f92b6
Add initial Fuse implementation for Stream
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 23:48:14 +02:00
Yoshua Wuyts
d0312a028c
mark task::ready as unstable
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 23:32:38 +02:00
Yoshua Wuyts
d5725e78be
use async-macros
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 23:24:15 +02:00
Yoshua Wuyts
1ad339a19e
rebase on master
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 23:22:30 +02:00
Yoshua Wuyts
4b535d4ada
expose future::ready!
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 23:22:30 +02:00
bors[bot]
af6ed7d0ee
Merge #205
205: Implement simple work stealing r=yoshuawuyts a=stjepang

This is our first version of a work-stealing scheduler. We won't stop here, there is still lots of room for improvement.

Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
2019-09-17 21:20:44 +00:00
Sunjay Varma
c87dab2d5e rustfmt 2019-09-17 16:48:58 -04:00
Yoshua Wuyts
fb2d2e28c1
try_select, select
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 22:35:47 +02:00
Yoshua Wuyts
4cbc31938d
add future::{join,try_join} macros
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 22:35:47 +02:00
Sunjay Varma
ad0510110c Added the ability to collect a stream of results 2019-09-17 16:25:26 -04:00
Yoshua Wuyts
98927a79a9
rebase
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 19:17:51 +02:00
Yoshua Wuyts
e6a3160c8b
add unstable cfg to FromStream/IntoStream
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 19:17:51 +02:00
Yoshua Wuyts
cb7f3dd376
remove unused types
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 19:17:51 +02:00
Yoshua Wuyts
6ee3f6cf9c
tests pass again
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 19:17:51 +02:00
Yoshua Wuyts
6c4c958abc
from/into stream
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

update examples

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

impl collect

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

compiles!

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

layout base for collect into vec

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

fmt

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

progress

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

compiles!

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

define failing test

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

cargo fmt

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

stuck again

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

fix trait bounds!

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

cargo fmt

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

hide dyn fut impl

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

dyn ret for vec

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

cargo fmt

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

collect docs

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

remove macro from vec::from_stream

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

shorten collect trait bound

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

Remove some Unpin and Send bounds

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 19:17:49 +02:00
Stjepan Glavina
04dbcbb639
Update src/task/worker.rs
Co-Authored-By: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 12:28:19 +01:00
bors[bot]
60a62f90fd
Merge #180
180: adds stream::fold combinator r=stjepang a=montekki

Fold. Kind of clumsy around the part with the option and moving out of the shared context.
___
Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.fold
Ref: #129 

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-17 09:56:18 +00:00
bors[bot]
08d954bb91
Merge #178
178: adds stream::enumerate combinator r=stjepang a=montekki

enumerate might be handy.
---
Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.enumerate
Ref: #129 

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-17 09:38:31 +00:00
Fedor Sakharov
9487b73f12
Update src/stream/stream/enumerate.rs
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-17 12:31:24 +03:00
Fedor Sakharov
efe351659f
Fixes review issues 2019-09-17 12:25:02 +03:00
Stjepan Glavina
0924911ac3 Implement simple work stealing 2019-09-17 11:12:47 +02:00
bors[bot]
d73e54450c
Merge #203
203: expose std::pin r=yoshuawuyts a=yoshuawuyts

This is important when defining / calling futures, so it makes sense for us to also export this.

But also given recent user feedback on the confusion on pinning, I'd like to open up the possibility to experiment with providing better pinning facilities  such as [`pin-project`](https://github.com/taiki-e/pin-project) or [`pin_mut`](https://docs.rs/pin-utils/0.1.0-alpha.4/pin_utils/macro.pin_mut.html) behind flags. I'm not sure if we could, or even should. But I want to allow us to have that conversation and test things out (even if it's just in floating patches.)

Thanks!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-17 09:01:53 +00:00
bors[bot]
265f1ff8eb
Merge #204
204: Add Stream::zip r=stjepang a=tirr-c



Co-authored-by: Wonwoo Choi <chwo9843@gmail.com>
2019-09-17 08:49:33 +00:00
Wonwoo Choi
73db46c90d Add Stream::zip 2019-09-17 14:11:06 +09:00
Yoshua Wuyts
39a1c2b577
add link to std pin docs
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 22:34:11 +02:00
Yoshua Wuyts
cafcddb0e1
feature guard pin
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 20:17:27 +02:00
Yoshua Wuyts
e9de779863
unstable facade around the pin submodule
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 19:59:56 +02:00
Yoshua Wuyts
7c73cdff25
cargo fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 19:59:56 +02:00
Yoshua Wuyts
343a6c1039
expose std::pin
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 19:59:56 +02:00
bors[bot]
ee31f68e80
Merge #190 #200
190: Clean up the fs module and a few other places r=stjepang a=stjepang

Just a cleanup for various pieces of documentation, mainly around the `lib.rs` docs, the prelude, and the `fs` module. Some small bugs are also fixed along the way.

This PR is the first one in a series of review PRs that I will be submitting before the upcoming 1.0 release.

200: expose IoSlice, IoSliceMut r=stjepang a=yoshuawuyts

Exposes `io::IoSlice` and `io::IoSliceMut`. Given we're returning these from `read_vectored` and `write_vectored` it might make sense to just include them as part of our re-exports. Thanks!

Ref #131.

Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 13:51:12 +00:00
Yoshua Wuyts
1341fa7add
cargo fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 15:34:06 +02:00
Yoshua Wuyts
ab112e9f39
expose IoSlice, IoSliceMut
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 14:22:52 +02:00
Yoshua Wuyts
9c82d5e3f3
remove custom log tools in favor of macro crate
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 14:07:06 +02:00
Wonwoo Choi
b70dfeab15 Require S: async_std::stream::Stream in Scan 2019-09-16 18:35:37 +09:00
Wonwoo Choi
d6ffdbce8d Remove Unpin bound in impl Stream for T 2019-09-16 18:25:46 +09:00
Wonwoo Choi
689b3c6560 Add io::repeat 2019-09-16 16:47:17 +09:00
bors[bot]
03f5022262
Merge #195
195: Remove the Send bound from block_on r=stjepang a=stjepang



Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
2019-09-16 07:31:21 +00:00
bors[bot]
f4182caa4a
Merge #196
196: Remove more Unpin bounds for Stream::scan r=stjepang a=tirr-c

cc #192. I missed the bounds on `Stream::scan` itself.

Co-authored-by: Wonwoo Choi <chwo9843@gmail.com>
2019-09-16 06:50:43 +00:00
bors[bot]
c6fecbd4ef
Merge #171
171: Add BufRead::consume r=stjepang a=yoshuawuyts

Ref #131. This implements `BufReader::consume`. Thanks!


Note on `fill_buf`: I couldn't get the `async fn fill_buf()` to work, but tracked progress for it here: https://gist.github.com/yoshuawuyts/09bbdc7823225ca96b5e35cd1da5d581. Got some lifetimes isssues. If anyone wants to give this a shot, please do!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-16 06:38:44 +00:00
Wonwoo Choi
e7b0fe2d2e Remove Unpin bounds more 2019-09-16 11:30:09 +09:00
bors[bot]
5f7a4433d5
Merge #192
192: Add Stream::scan r=stjepang a=tirr-c

Ref #129. The mapper function `f` is synchronous and returns bare `Option<B>`.

Asynchronous `f` seems tricky to implement right. It requires the wrapper to be self-referential, as a reference to internal state may be captured by the returned future.

Co-authored-by: Wonwoo Choi <chwo9843@gmail.com>
2019-09-15 21:38:37 +00:00
Wonwoo Choi
91e61cf6bf Remove unnecessary Unpin bounds 2019-09-15 21:18:02 +09:00
Stjepan Glavina
1d862cf604 Remove the Send bound from block_on 2019-09-15 00:36:17 +02:00
Kevin Donahue
127feb47f9 add doc comment for join handle drop behavior 2019-09-14 16:35:27 -04:00
Wonwoo Choi
50a7db2af4 Add Stream::scan 2019-09-14 23:26:46 +09:00
Stjepan Glavina
7f71af9415 cargo fmt 2019-09-14 09:15:51 +02:00
Stjepan Glavina
a4381230b8 Clean up the fs module and a few other places 2019-09-14 01:24:31 +02:00
Yoshua Wuyts
3b8e604acc
mark io::cursor as unstable
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 20:02:31 +02:00
Yoshua Wuyts
69c9162558
fix tests
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 19:58:18 +02:00
Yoshua Wuyts
a5b0acb378
AsyncBufRead for Cursor
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 19:58:18 +02:00
Yoshua Wuyts
0bc39e6e6c
add io::cursor
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 19:58:18 +02:00
bors[bot]
e060326910
Merge #177
177: implement DoubleEndedStream r=yoshuawuyts a=yoshuawuyts

Ref #129. This is the most basic version of the `DoubleEndedStream` trait. Because there is no counterpart in `futures-rs` we allow this to be implementable (not sure if we should though?).

This is not a high-priority trait to implement, with probably the most useful addition being the blanket impl over [`std::iter::Fuse`](https://doc.rust-lang.org/std/iter/struct.Fuse.html) (where we should have a `Fuse` counterpart for `Stream` also).

So I'm taking this one step at the time, and this PR introduces just the bare minimum to get things working. Thanks!

r? @stjepang @taiki-e

## Refs
- https://doc.rust-lang.org/std/iter/trait.DoubleEndedIterator.html
- #129 


Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 17:52:10 +00:00
Yoshua Wuyts
fda74ac0ab
mark as unstable
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 19:36:57 +02:00
Yoshua Wuyts
40fb485cca
cargo fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 19:35:18 +02:00
Yoshua Wuyts
23ca060e4c
implement DoubleEndedStream
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 19:35:18 +02:00
bors[bot]
3054509fd0
Merge #184
184: housekeeping after 145 r=yoshuawuyts a=montekki

Now that #145 is merged combinators can follow.
1. All combinators taking `&mut self` should imply `Self: Pin`.
2. Trait bounds are to `Stream`
3. Cleans up docs and `Debug` derives.

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-13 17:31:48 +00:00
Yoshua Wuyts
d68d6bb052
links the timeout docs to each other
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 17:58:03 +02:00
Yoshua Wuyts
10fedfe97f
implement feedback for bufreader methods
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 02:21:36 +02:00
Yoshua Wuyts
ab0a4cb966
remove pin<self> bounds from consume
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-13 02:16:47 +02:00
Stjepan Glavina
2818c7099f Suppress a lint that makes CI fail on windows 2019-09-12 23:24:20 +02:00
Stjepan Glavina
5429c2c0a3 cargo fmt 2019-09-12 18:49:09 +02:00
Stjepan Glavina
d25dae5419 Refactor the networking driver 2019-09-12 18:45:53 +02:00
Fedor Sakharov
0080a0da8c
change expect to unwrap 2019-09-12 18:15:20 +03:00
Fedor Sakharov
6c3f8af62d
fixes after #145 2019-09-11 22:07:20 +03:00
Fedor Sakharov
774550ca99
Merge branch 'master' into fs-stream-fold 2019-09-11 22:05:04 +03:00
Fedor Sakharov
3dc33f54b4
fixes after #145 2019-09-11 22:03:44 +03:00
Fedor Sakharov
9b3658244d
Merge branch 'master' into fs-stream-enumerate 2019-09-11 22:01:48 +03:00
Fedor Sakharov
18428d6bfe
housekeeping after 145 2019-09-11 21:47:52 +03:00
Stjepan Glavina
2497f4d3e1 Merge branch 'master' into poll_next 2019-09-11 17:08:25 +02:00
Stjepan Glavina
724a9f4eb0 Add Stream::poll_next 2019-09-11 17:06:02 +02:00
Wonwoo Choi
06f2569d23 Add BufRead::fill_buf (#176)
* Add BufRead::fill_buf

* Make FillBufFuture constructor pub(crate)

* Give more information about the transmutation source type
2019-09-11 16:02:57 +01:00
Fedor Sakharov
cdd4215e8f
forgot None case 2019-09-11 10:09:52 +03:00
Fedor Sakharov
2d75ffacc4
fixes example to resemble std more 2019-09-11 10:08:08 +03:00
Fedor Sakharov
5b720ab1e2
adds stream::fold combinator 2019-09-11 09:54:25 +03:00
Fedor Sakharov
97a5f9b50c
adds stream::find combinator 2019-09-10 23:38:11 +03:00
Fedor Sakharov
ed944d051a
adds stream::enumerate combinator 2019-09-10 20:43:56 +03:00
Fedor Sakharov
efb8415429
Merge branch 'master' into fs-stream-find-map 2019-09-10 16:25:38 +03:00
bors[bot]
6d1e71fb68
Merge #163
163: adds stream::filter_map combinator r=yoshuawuyts a=montekki

Implements a `flat_map` combinator. Currently the same about `ret!` as in #162 .

Also the naming should probably be `FilterMapStream`, but in that case `Take` stream should also change it's name i guess.

Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.flat_map
Ref: #129 

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-10 12:41:08 +00:00
bors[bot]
a0c9442261
Merge #166
166: adds stream::nth combinator r=yoshuawuyts a=montekki

Implements `nth` combinator.

---
Stdlib: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.nth
Ref: #129 

Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
2019-09-10 12:11:04 +00:00
Fedor Sakharov
9b381e427f
Apply suggestions from code review
Co-Authored-By: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
2019-09-10 15:01:25 +03:00
Fedor Sakharov
272f74c1da fixes to stream::min_by (#162)
* fixes to stream::min_by

* no reason to split these impls

* remove Debug derive from MinByFuture
2019-09-10 13:53:30 +02:00
Fedor Sakharov
45bd0ef13d
adds stream::find_map combinator 2019-09-10 09:59:00 +03:00
James Munns
6db71e597b Add link to silence doc warning 2019-09-10 03:50:03 +02:00
Fedor Sakharov
43b7523c69
remove Debug derive from NthFuture 2019-09-09 12:42:52 +03:00
Stjepan Glavina
2c02037673 Fix a typo 2019-09-09 09:18:56 +02:00
bors[bot]
b849669998
Merge #165
165: Fix a bug in conversion of File into raw handle r=stjepang a=stjepang

Same bugfix as #148, but applied to `async_std::fs::File`.

Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
2019-09-08 22:34:38 +00:00
bors[bot]
7c05356ef4
Merge #148
148: Make sure into_raw_fd doesn't close the file descriptor r=stjepang a=yshui

Closes #147 

Co-authored-by: Yuxuan Shui <yshuiv7@gmail.com>
Co-authored-by: yshui <yshuiv7@gmail.com>
2019-09-08 22:19:29 +00:00
yshui
8e2bf24456
Apply suggestions from code review
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-08 23:16:34 +01:00
Fedor Sakharov
45cd3b0894
adds stream::nth combinator 2019-09-08 21:42:35 +03:00
Stjepan Glavina
41f345d319 Fix a bug in conversion of File into raw handle 2019-09-08 19:19:34 +02:00
Yoshua Wuyts
9bf06ce52b fix io::copy link (#164)
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-08 17:41:23 +02:00
Fedor Sakharov
55bdea4649
adds stream::filter_map combinator 2019-09-08 18:09:33 +03:00
bors[bot]
63f3a809aa
Merge #161
161: Split BufRead into multiple files r=stjepang a=stjepang



Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
2019-09-08 14:27:43 +00:00
Yoshua Wuyts
ba43a05d01 split stream into multiple files (#150)
* split stream into multiple files

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>

* cargo fmt

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-08 12:56:51 +02:00
Stjepan Glavina
55550c6fc9 Split BufRead into multiple files 2019-09-08 12:54:22 +02:00
Stjepan Glavina
8c00cc53ce Flush more often to prevent flushes during seek 2019-09-08 12:14:07 +02:00
bors[bot]
8d3d80a678
Merge #151
151: Split io into multiple files r=stjepang a=yoshuawuyts

Counterpart to #150, splits `io::read` and `io::write` into multiple files. This is useful to prevent a single file from becoming hard to navigate as we add more combinators. No other changes were made. Ref #131. Thanks!

Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-08 09:57:36 +00:00
bors[bot]
a8a2ae9e29
Merge #157
157: More robust file implementation r=stjepang a=stjepang

This is a reimplementation of the `File`s state machine.

The previous implementation was simple and a bit naive. It was not fundamentally wrong but had surprises in some corner cases. For example, if an async read operation was started but we timed out on it, the file cursor would move even though we didn't complete the operation. The new implementation will move the cursor only when read/write operations complete successfully.

There was also a deadlock hazard in the case where multiple tasks were concurrently reading or writing to the same file, in which case some task wakeups would be lost. This PR fixes the problem.

A nice consequence of this PR: `futures-channel` is now unused, so we can remove it from the dependency list.

Co-authored-by: Stjepan Glavina <stjepang@gmail.com>
2019-09-08 08:44:17 +00:00
Stjepan Glavina
6ed0e857fd Fix some typos, expand comments 2019-09-08 10:43:47 +02:00
Yoshua Wuyts
ec1f33fe62
inline better
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-08 02:03:09 +02:00
Yoshua Wuyts
b1d85ab460
add io::prelude
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-08 01:55:39 +02:00
Stjepan Glavina
17c95a39d7
More robust file implementation
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-07 23:17:20 +02:00
Yoshua Wuyts
910801e2d6
fix doc compile
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-07 23:15:21 +02:00
Yoshua Wuyts
e1137345d4
cargo fmt
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-07 23:15:21 +02:00
Yoshua Wuyts
4a2194f37c
split io::write into multiple files
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-07 23:15:21 +02:00
Yoshua Wuyts
a90100962d
split io::read into multiple files
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-07 23:15:21 +02:00
Fedor Sakharov
91a66c2d94
append doc example for io::buf_read::read_until 2019-09-06 21:58:53 +03:00
Florian Gilcher
481002ee71
Merge pull request #152 from montekki/fs-fix-buf-read-docs
fixes docs for io::buf_read::read_until
2019-09-06 17:20:43 +02:00
Fedor Sakharov
a2c2413bc5
fixes docs for io::buf_read::read_until 2019-09-06 17:45:24 +03:00
Fedor Sakharov
7e3599a6a5 add stream::min_by method (#146)
* add stream::min_by method

* Update src/stream/stream.rs

Co-Authored-By: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
2019-09-06 12:08:51 +02:00
Yuxuan Shui
876059cfe0
Make sure ownership is transferred in into_raw_fd
Previously all of the into_raw_fd implementations only returns a copy of
the inner RawFd, while still holding the ownership of the file
descriptor when returning for into_raw_fd. Since `self` is dropped at
the end of into_raw_fd, the returned file descriptor will actually be
closed, render the function unuseable.

The patch makes sure that into_raw_fd actually takes the ownership of
the file descriptor all the way from the inner IoHandle. To achieve
this, I have to use an Option in IoHandle to store the I/O source. It's
not pretty, but I cannot come up with a better way.
2019-09-06 10:36:25 +01:00
Stjepan Glavina
bac74c2d7f
Reduce dependency on futures crate (#140)
* Add future::poll_fn

* Replace all uses of poll_fn with the new one

* Remove some uses of futures

* Simplify ReadDir and DirEntry

* Remove some use of futures from File

* Use futures subcrates

* Fix imports in docs

* Remove futures-util dependency

* Remove futures-executor-preview

* Refactor

* Require more features in the futures-preview crate
2019-09-05 01:22:41 +02:00
DCjanus
238a3c882b Implement an async version of ToSocketAddrs (#74)
* Implement an async version of ToSocketAddrs

* fix documentation issue

* genius hack: pretending to be `impl Future`

* replace `std::net::ToSocketAddrs` with `async-std::net::ToSocketAddrs`

* Move unit tests into the tests directory

* Stylistic changes

* Remove re-exports in async_std::net

* fix broken link

* some mirror changes

* remove unnecessary format

* migrate: `std::net::ToSocketAddrs` -> `async_std::net::ToSocketAddrs`

* fix typo(tutorial)

* remove unnecessary type bound

* lifetime for future
2019-09-04 20:09:49 +02:00
Shady Khalifa
bff10fe83b Stream::any implementation (#135)
* add stream::any method

* use `ret` macro and small improvements

* fix docs return type in `ret` macro
2019-09-01 19:58:16 +02:00
James Munns
e99eafe64f
Merge pull request #132 from shekohex/stream-all-method
Stream::all implementation
2019-08-31 13:10:02 +02:00
Shady Khalifa
e517c60fb1
remove comments 2019-08-30 20:32:03 +02:00
Shady Khalifa
e8860454e7
remove extra newline
Co-Authored-By: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
2019-08-30 20:30:48 +02:00
Stjepan Glavina
38a86766d3 Add future::timeout() (#20)
* Add future::timeout()

* Update src/future/timeout.rs

Co-Authored-By: Yoshua Wuyts <yoshuawuyts+github@gmail.com>

* Update src/future/timeout.rs

Co-Authored-By: Yoshua Wuyts <yoshuawuyts+github@gmail.com>

* Put futues::timeout behind unstable feature
2019-08-30 20:28:49 +02:00
Shady Khalifa
243a48c14e remove debug 2019-08-30 18:37:58 +02:00
Shady Khalifa
fe45ba5628 update docs and examples 2019-08-30 18:35:51 +02:00
Shady Khalifa
3b80165532 add stream::all method 2019-08-30 17:42:35 +02:00
Roman Proskuryakov
374f0c9eb8 Refactor TcpStream::connect into resolving loop and TcpStream::connect_to (#119) 2019-08-28 22:09:15 +02:00
Roman Proskuryakov
8dff8951a6 Reduce io::TimeoutFuture to futures_timer::TryFutureExt (#113) 2019-08-27 11:47:15 +02:00
Dylan Frankland
d47f7d3e92 rustfmt fs::create_dir_all 2019-08-26 12:59:30 -07:00
Dylan Frankland
c21e381098 Remove unused import from fs::create_dir_all 2019-08-26 12:50:06 -07:00
Dylan Frankland
8451789da5 Expose fs::create_dir_all 2019-08-26 12:47:15 -07:00
Florian Gilcher
70769d8bac
Merge pull request #94 from async-rs/remove-async_await-gate
remove async_await feature gate
2019-08-21 11:17:28 -07:00
Yoshua Wuyts
63ad786768
remove async_await feature gate
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-08-21 00:29:35 -07:00
Kirill Mironov
a0759a6c53 Implement LineWriter and BufWriter 2019-08-21 01:44:05 +03:00
Kirill Mironov
48d4c9b18d begin implementing BufWriter 2019-08-20 18:30:33 +03:00
Kirill Mironov
91aeb39e4c begin implementing BufWriter 2019-08-20 14:48:15 +03:00
Aleksey Kladov
04cafeab2c fix counting lines example 2019-08-20 11:18:11 +03:00
Andrew Chin
50e69dc765 Fix documention links to docs.rs 2019-08-16 21:50:02 -04:00
Stjepan Glavina
6418bc9849 Fix failing docs 2019-08-16 17:39:49 +02:00
Stjepan Glavina
0647de5e8d Tweak docs 2019-08-16 17:18:39 +02:00
Stjepan Glavina
3c42ecab8f Prepare for v0.99.0 2019-08-16 17:02:17 +02:00
Stjepan Glavina
f4ff5443c8 Prepare for v0.99.0 2019-08-16 16:59:01 +02:00
Florian Gilcher
56cd64520d
Merge pull request #33 from async-rs/remove-time-module
Remove time module
2019-08-16 16:56:47 +02:00
Florian Gilcher
fa407b18c0 Http with io timeouts (#42)
* Add simple http example with a timeout

* Update lib.rs simple http example comment

* Move to current io module
2019-08-16 16:36:44 +02:00
Florian Gilcher
9ae2742955
Fix book link 2019-08-16 15:19:10 +02:00
Stjepan Glavina
4b45918f50 Remove time module 2019-08-15 19:26:10 +02:00
Stjepan Glavina
8c647cf5b4
Merge pull request #32 from async-rs/tyler_randomized_spindown
Stagger background thread spin-down to avoid a thundering herd
2019-08-15 19:13:43 +02:00
Stjepan Glavina
487811ed4c
Merge pull request #19 from async-rs/io-timeout
Add io::timeout()
2019-08-15 18:46:35 +02:00
Tyler Neely
10146e31f0 Stagger background thread spin-down to avoid a thundering herd 2019-08-15 18:18:13 +02:00
Stjepan Glavina
e3fc67c1cb Address comments 2019-08-15 17:59:48 +02:00
Florian Gilcher
228f22440c
Link to the book from lib.rs 2019-08-15 15:33:45 +02:00
Stjepan Glavina
9b3e8b8f26 Use our own Sink/Empty and fix compilation errors 2019-08-15 11:47:20 +02:00
Stjepan Glavina
ea2da1f4a4
Merge branch 'master' into tyler_elastic_threadpool 2019-08-15 10:52:52 +02:00
Stjepan Glavina
d512e7c45c Add io::timeout() 2019-08-14 16:14:44 +02:00
Stjepan Glavina
13835b0a78 Formatting 2019-08-14 15:57:51 +02:00
Stjepan Glavina
dd40887750 Formatting 2019-08-14 15:35:46 +02:00
Stjepan Glavina
e459bd048e Cleanup and docs 2019-08-14 04:22:37 +02:00
Stjepan Glavina
019c8085f4 Cleanup examples 2019-08-14 03:47:39 +02:00
Stjepan Glavina
a2e54fcd29 Replace crossbeam with crossbeam-channel 2019-08-12 23:47:32 +02:00
Stjepan Glavina
ae84fd4498
Merge branch 'master' into tyler_elastic_threadpool 2019-08-12 20:32:49 +02:00
Stjepan Glavina
1f9628d8ad Cleanup 2019-08-12 20:29:16 +02:00
Stjepan Glavina
01aac21386 Modularize time module 2019-08-12 20:28:50 +02:00
Stjepan Glavina
9d8ac36813 Rename feature docs.rs to docs 2019-08-12 19:50:30 +02:00
Stjepan Glavina
756da0e89d Modularize 2019-08-12 19:45:28 +02:00
Stjepan Glavina
c3eee6cba5 Fix broken docs 2019-08-12 19:12:41 +02:00
Stjepan Glavina
68d7a9c34e Refactor 2019-08-12 18:38:59 +02:00
Stjepan Glavina
a430e27819 Cleanup, docs, fmt 2019-08-12 18:00:21 +02:00
Stjepan Glavina
0ab2c8f49b typos 2019-08-12 12:54:37 +02:00
Stjepan Glavina
e44451a042 Revamp IO traits and Stream trait 2019-08-12 12:50:35 +02:00
Stjepan Glavina
43d822cbc5 Add a html logo 2019-08-12 12:50:35 +02:00
Tyler Neely
445b4161cb Improve comment on the blocking threadpool 2019-08-09 16:40:31 +02:00
Aleksey Kladov
3ce68814b6 implement FusedStream for net::Incoming 2019-08-09 12:47:48 +02:00
Tyler Neely
81fa1d419a Remove all of the dynamic control stuff for now and just use nonblocking sends + 1 second receive timeouts 2019-08-09 12:22:54 +02:00
Tyler Neely
ab613a53e5 Improve comments in the blocking threadpool 2019-08-09 12:06:43 +02:00
Tyler Neely
4cb1faf299 Use unbuffered work queue in the dynamic threadpool to reduce bufferbloat 2019-08-09 12:06:26 +02:00
Tyler Neely
d75aae23cb Tune timings of dynamic threadpool 2019-08-09 12:06:00 +02:00
Stjepan Glavina
3f4a56abdc Reformat doc examples 2019-08-09 02:56:59 +02:00
Tyler Neely
e97dfdc4cc Add dynamic threadpool 2019-08-08 16:48:18 +02:00
Florian Gilcher
5b0a6269a9
Initial commit 2019-08-08 14:44:48 +02:00