1
Fork 0
Commit graph

509 commits

Author SHA1 Message Date
kennytm
e3a8f7db47
Rollup merge of #58553 - scottmcm:more-ihle, r=Centril
Use more impl header lifetime elision

Inspired by seeing explicit lifetimes on these two:

- https://doc.rust-lang.org/nightly/std/slice/struct.Iter.html#impl-FusedIterator
- https://doc.rust-lang.org/nightly/std/primitive.u32.html#impl-Not

And a follow-up to https://github.com/rust-lang/rust/pull/54687, that started using IHLE in libcore.

Most of the changes in here fall into two big categories:

- Removing lifetimes from common traits that can essentially never user a lifetime from an input (particularly `Drop`, `Debug`, and `Clone`)

- Forwarding impls that are only possible because the lifetime doesn't matter (like `impl<R: Read + ?Sized> Read for &mut R`)

I omitted things that seemed like they could be more controversial, like the handful of iterators that have a `Item: 'static` despite the iterator having a lifetime or the `PartialEq` implementations [where the flipped one cannot elide the lifetime](https://internals.rust-lang.org/t/impl-type-parameter-aliases/9403/2?u=scottmcm).

I also removed two lifetimes that turned out to be completely unused; see https://github.com/rust-lang/rust/issues/41960#issuecomment-464557423
2019-02-20 11:59:10 +08:00
Scott McMurray
3bea2ca49d Use more impl header lifetime elision
There are two big categories of changes in here

- Removing lifetimes from common traits that can essentially never user a lifetime from an input (particularly `Drop` & `Debug`)
- Forwarding impls that are only possible because the lifetime doesn't matter (like `impl<R: Read + ?Sized> Read for &mut R`)

I omitted things that seemed like they could be more controversial, like the handful of iterators that have a `Item: 'static` despite the iterator having a lifetime or the `PartialEq` implementations where the flipped one cannot elide the lifetime.
2019-02-17 19:42:36 -08:00
Alexander Regueiro
99ed06eb88 libs: doc comments 2019-02-10 23:57:25 +00:00
Mazdak Farrokhzad
ebbecac538
Rollup merge of #57296 - JosephTLyons:Fix-question-mark-operator-in-stdio-document, r=wesleywiser
Fixed the link to the ? operator

I'm working on updating all broken links, but figured I'd break up the pull requests so they are easier to review, versus just one big pull request.
2019-01-12 10:54:58 +01:00
king6cong
d60fa1d3c2 Doc rewording, use the same name writer 2019-01-04 11:23:24 +08:00
Joseph Lyons
40658fdade Fixed the link to the ? operator 2019-01-03 00:20:31 -05:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
Pietro Albini
cf9fd6074d
Rollup merge of #56363 - Lucretiel:patch-3, r=shepmaster
Defactored Bytes::read

Removed unneeded refactoring of read_one_byte, which removed the unneeded dynamic dispatch (`dyn Read`) used by that function.

This function is only used in one place in the entire Rust codebase; there doesn't seem to be a reason for it to exist (and there especially doesn't seem to be a reason for it to use dynamic dispatch)
2018-12-19 11:47:04 +01:00
Nathan West
a1790e8c20
Reordered match arms 2018-12-17 17:43:52 -08:00
Corey Farwell
c025d61409 Replace usages of ..i + 1 ranges with ..=i. 2018-12-04 12:05:19 -08:00
Nathan West
7c05ef5db0
Typo 2018-11-29 20:53:37 -05:00
Nathan West
697b83b307
Removed unnecessary buf subscript 2018-11-29 20:53:13 -05:00
Nathan West
f59d645a9b
Defactored Bytes::read
Removed unneeded refactoring of read_one_byte, which removed the unneeded dynamic dispatch (`dyn Read`) used by that function.
2018-11-29 20:36:32 -05:00
antoine-de
1ed91951c3 fix small doc mistake
The std::io::read main documentation can lead to error because the
buffer is prefilled with 10 zeros that will pad the response.
Using an empty vector is better.

The `read_to_end` documentation is already correct though.

This is my first rust PR, don't hesitate to tell me if I did something
wrong.
2018-11-21 11:17:48 +01:00
Marcus Griep
5285d35b49
Improve docs for std::io::Seek
Fixes #54562
2018-09-28 08:01:56 -04:00
Alva Snædís
aa4f73c845 Update documentation for fill_buf in std::io::BufRead
Brings the documentation in line with the BufReader implementation.

Fixes #48022.
2018-09-07 23:16:55 +00:00
ljedrz
b5ed39ff10 Implement custom read_to_end for io::Take 2018-08-01 13:26:45 +02:00
Simon Sapin
4ca77f702f Remove unstable and deprecated APIs 2018-07-30 18:18:23 +02:00
ljedrz
560d8079ec Deny bare trait objects in src/libstd. 2018-07-10 20:35:36 +02:00
Sgeo
0b9c686b47
Remove erroneous example of main as a non-Result function. 2018-06-19 18:32:44 -04:00
Simon Sapin
7cbeddb7b7 Deprecate Read::chars and char::decode_utf8
Per FCP:

* https://github.com/rust-lang/rust/issues/27802#issuecomment-377537778
* https://github.com/rust-lang/rust/issues/33906#issuecomment-377534308
2018-04-15 08:18:00 +02:00
Thayne McCombs
210a2a2b9e Stabilize take_set_limit
Fixes #42781
2018-04-05 00:30:49 -06:00
Matt Brubeck
1ce98f34d3 Cross-reference fs::read functions from io::Read docs 2018-04-03 15:25:55 -07:00
Corey Farwell
e9dcec070d Remove hidden foo functions from doc examples; use Termination trait.
Fixes https://github.com/rust-lang/rust/issues/49233.
2018-03-28 13:15:05 +02:00
Andreas Streichardt
f0a968eada Add missing link 2018-02-19 17:19:30 +01:00
Ross Light
e1e79d3a10 Remove "empty buffer" doc in read_until
This appears copied from fill_buf, but the above paragraph already indicates that a lack of delimiter at the end is EOF.
2018-02-15 07:32:42 -08:00
Guillaume Gomez
93969734f6 Add missing links 2018-01-08 14:16:16 +01:00
Sergio Benitez
d301da55f8 Clarify appending behavior of 'io::Read::read_to_string()'. 2018-01-05 04:24:12 -08:00
Guillaume Gomez
8835289434 Fix some rustdoc warnings 2017-12-20 17:50:02 +01:00
Matt Brubeck
3024c1434a Use Try syntax for Option in place of macros or match 2017-12-09 14:18:33 -08:00
kennytm
4c8cddb11b Rollup merge of #46224 - GuillaumeGomez:io-missing-link, r=QuietMisdreavus
Remove invalid doc link

r? @rust-lang/docs
2017-11-26 15:01:35 +08:00
Guillaume Gomez
377aaeae20 Remove invalid doc link 2017-11-23 21:48:22 +01:00
kennytm
9b090a0261 Rollup merge of #46050 - sunfishcode:read_to_end, r=sfackler
Optimize `read_to_end`.

This patch makes `read_to_end` use Vec's memory-growth pattern rather
than using a custom pattern.

This has some interesting effects:

 - If memory is reserved up front, `read_to_end` can be faster, as it
   starts reading at the buffer size, rather than always starting at 32
   bytes. This speeds up file reading by 2x in one of my use cases.

 - It can reduce the number of syscalls when reading large files.
   Previously, `read_to_end` would settle into a sequence of 8192-byte
   reads. With this patch, the read size follows Vec's allocation
   pattern. For example, on a 16MiB file, it can do 21 read syscalls
   instead of 2057. In simple benchmarks of large files though, overall
   speed is still dominated by the actual I/O.

 - A downside is that Read implementations that don't implement
   `initializer()` may see increased memory zeroing overhead.

I benchmarked this on a variety of data sizes, with and without
preallocated buffers. Most benchmarks see no difference, but reading
a small/medium file with a pre-allocated buffer is faster.
2017-11-22 01:12:58 +08:00
bors
421a2113a8 Auto merge of #45039 - QuietMisdreavus:doc-spotlight, r=GuillaumeGomez,QuietMisdreavus
show in docs whether the return type of a function impls Iterator/Read/Write

Closes #25928

This PR makes it so that when rustdoc documents a function, it checks the return type to see whether it implements a handful of specific traits. If so, it will print the impl and any associated types. Rather than doing this via a whitelist within rustdoc, i chose to do this by a new `#[doc]` attribute parameter, so things like `Future` could tap into this if desired.

### Known shortcomings

~~The printing of impls currently uses the `where` class over the whole thing to shrink the font size relative to the function definition itself. Naturally, when the impl has a where clause of its own, it gets shrunken even further:~~ (This is no longer a problem because the design changed and rendered this concern moot.)

The lookup currently just looks at the top-level type, not looking inside things like Result or Option, which renders the spotlights on Read/Write a little less useful:

<details><summary>`File::{open, create}` don't have spotlight info (pic of old design)</summary>

![image](https://user-images.githubusercontent.com/5217170/31209495-e59d027e-a950-11e7-9998-ceefceb71c07.png)

</details>

All three of the initially spotlighted traits are generically implemented on `&mut` references. Rustdoc currently treats a `&mut T` reference-to-a-generic as an impl on the reference primitive itself. `&mut Self` counts as a generic in the eyes of rustdoc. All this combines to create this lovely scene on `Iterator::by_ref`:

<details><summary>`Iterator::by_ref` spotlights Iterator, Read, and Write (pic of old design)</summary>

![image](https://user-images.githubusercontent.com/5217170/31209554-50b271ca-a951-11e7-928b-4f83416c8681.png)

</details>
2017-11-21 03:03:28 +00:00
Garrett Berg
44da4a0656 Add doc for Reading from &str and some related cleanup 2017-11-18 16:45:04 -07:00
QuietMisdreavus
cbe4ac3079 spotlight Iterator/Read/Write impls on function return types 2017-11-17 22:50:15 +01:00
Dan Gohman
6b1a3bc80a Optimize read_to_end.
This patch makes `read_to_end` use Vec's memory-growth pattern rather
than using a custom pattern.

This has some interesting effects:

 - If memory is reserved up front, `read_to_end` can be faster, as it
   starts reading at the buffer size, rather than always starting at 32
   bytes. This speeds up file reading by 2x in one of my use cases.

 - It can reduce the number of syscalls when reading large files.
   Previously, `read_to_end` would settle into a sequence of 8192-byte
   reads. With this patch, the read size follows Vec's allocation
   pattern. For example, on a 16MiB file, it can do 21 read syscalls
   instead of 2057. In simple benchmarks of large files though, overall
   speed is still dominated by the actual I/O.

 - A downside is that Read implementations that don't implement
   `initializer()` may see increased memory zeroing overhead.

I benchmarked this on a variety of data sizes, with and without
preallocated buffers. Most benchmarks see no difference, but reading
a small/medium file with a pre-allocated buffer is faster.
2017-11-16 16:12:36 -08:00
kennytm
838a38365d
Fixed several pulldown warnings when documenting libstd. 2017-11-14 17:22:57 +08:00
kennytm
e2554b36fc Rollup merge of #45664 - mbrubeck:docs, r=estebank
Fix incorrect error type in Read::byte docs

None
2017-11-01 13:32:20 +08:00
Matt Brubeck
351f7b02de Fix incorrect error type in Read::byte docs 2017-10-31 12:30:15 -07:00
Tobias Bucher
66268e8a8d Add a hint what BufRead functions do on EOF 2017-10-31 11:04:08 +01:00
Nick Cameron
1d6d09fa6d Fix tests
This is just undoing changes from #41991 because we are not running markdown rendering twice.
2017-09-01 20:07:04 +12:00
Guillaume Gomez
bba7fd9dd5 Temporary fix for a test (will require another update when this is fully merged) 2017-08-30 09:40:43 +02:00
lukaramu
49ee9f3f08 Fix inconsistent doc headings
This fixes headings reading "Unsafety" and "Example", they should be
"Safety" and "Examples" according to RFC 1574.
2017-08-24 18:42:53 +02:00
Guillaume Gomez
871bd237ee Add missing links for Read trait 2017-08-21 11:45:33 +02:00
Guillaume Gomez
592bdc3974 Add missing links in io module docs 2017-08-10 23:11:40 +02:00
Mark Simulacrum
7109d03db5 Allow setting the limit on std::io::Take. 2017-07-11 06:27:37 -06:00
Sergio Benitez
d280b40b18 Stabilize 'more_io_inner_methods' feature. 2017-06-30 18:05:04 -07:00
Steven Fackler
ecbb896b9e Add Read::initializer.
This is an API that allows types to indicate that they can be passed
buffers of uninitialized memory which can improve performance.
2017-06-20 20:26:22 -07:00
Corey Farwell
f5f74a22c9 Rollup merge of #42685 - Havvy:doc-remove-sometimes, r=steveklabnik
Remove sometimes in std::io::Read doc

We use it immediately in the next sentence, and the word is filler.

A different conversation to make is whether we want to call them Readers in the documentation at all. And whether it's actually called "Readers" elsewhere.
2017-06-16 00:32:46 -04:00