Commit Graph

568 Commits

Author SHA1 Message Date
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
Wonwoo Choi
3cb7825986 Update older URLs pointing to the first edition of the Book
`compiler-plugins.html` is moved into the Unstable Book.
Explanation is slightly modified to match the change.
2017-06-15 00:04:00 +09:00
Havvy
edd3cd84fe Remove sometimes in std::io::Read doc
We use it immediately in the next sentence, and the word is filler.
2017-06-13 18:49:34 -07:00
Zack Weinberg
4ab3bcb9ca Fix up stability annotations per feedback. 2017-05-10 09:52:16 -04:00
Zack Weinberg
07766f675c Revise the eprint(ln)! feature.
* Factor out the nigh-identical bodies of `_print` and `_eprint` to a helper
   function `print_to` (I was sorely tempted to call it `_doprnt`).
 * Update the issue number for the unstable `eprint` feature.
 * Add entries to the "unstable book" for `eprint` and `eprint_internal`.
 * Style corrections to the documentation.
2017-05-10 09:41:42 -04:00
Zack Weinberg
76127275a0 Add eprint! and eprintln! macros to the prelude.
These are exactly the same as `print!` and `println!` except that
they write to stderr instead of stdout.  Issue #39228.
2017-05-10 09:29:16 -04:00
Corey Farwell
5f62b2716f Rollup merge of #41463 - SergioBenitez:master, r=alexcrichton
Add internal accessor methods to io::{Chain, Take}.

Resolves #29067.
2017-04-25 23:05:56 -04:00
Sergio Benitez
c168d8bb07 Add cautions to io::get_mut method documentation. 2017-04-24 17:12:42 -07:00
Sergio Benitez
76397aea50 Reference tracking issue for more_io_inner_methods. 2017-04-24 17:12:38 -07:00
Sergio Benitez
a765dcaf53 Add internal accessor methods to io::{Chain, Take}.
Resolves #29067.
2017-04-24 16:36:50 -07:00
Tobias Bucher
c49d0906da Specify behavior of write_all for ErrorKind::Interrupted errors
Also spell out that read and write operations should be retried on
`ErrorKind::Interrupted` errors.

Fixes #38494.
2017-04-21 10:32:13 +02:00
Oliver Middleton
b4be475836 Fix Markdown issues in the docs
* Since the switch to pulldown-cmark reference links need a blank line
before the URLs.
* Reference link references are not case sensitive.
* Doc comments need to be indented uniformly otherwise rustdoc gets
confused.
2017-04-06 12:57:40 +01:00
Corey Farwell
6edab01499 Rollup merge of #40763 - pirate:patch-2, r=steveklabnik
Add helpful hint in io docs about how ? is not allowed in main()

This is my effort to help alleviate the confusion caused by the error message:
```rust
error[E0277]: the trait bound `(): std::ops::Carrier` is not satisfied
  --> hello_world.rs:72:5
   |
72 |     io::stdin().read_line(&mut d_input)?;
   |     ------------------------------------
   |     |
   |     the trait `std::ops::Carrier` is not implemented for `()`
   |     in this macro invocation
   |
   = note: required by `std::ops::Carrier::from_error`

error: aborting due to previous error
```
This has been discussed at length in https://github.com/rust-lang/rust/issues/35946, but I figured it would be helpful to mention in the docs.
Reading user input is one of the first things beginners will look up in the docs, so my thinking was they'd see this warning here and not have to deal with the [tricky error message](https://blog.rust-lang.org/2017/03/02/lang-ergonomics.html).

If you think this isn't the right place to put this in the docs, that's understandable, I'm open to suggestions for putting it elsewhere or removing it entirely.
2017-03-31 16:48:26 -04:00
Nick Sweeting
cd2ec7eded add missing import 2017-03-28 13:27:46 -04:00
Nick Sweeting
4806f01d7c Fix tidy errors and simplify example 2017-03-27 16:34:13 -04:00
Corey Farwell
8fba638b08 Rewrite io::BufRead doc examples to better demonstrate behaviors.
Prior to this commit, most of the `BufRead` examples used `StdinLock` to
demonstrate how certain `BufRead` methods worked. Using `StdinLock` is
not ideal since:

* Relying on run-time data means we can't show concrete examples of how
  these methods work up-front. The user is required to run them in order
  to see how they behave.
* If the user tries to run an example in the playpen, it won't work
  because the playpen doesn't support user input to stdin.
2017-03-23 23:04:36 -04:00
Nick Sweeting
04fbec1a0c newline for breathing room 2017-03-23 13:43:09 -04:00
Nick Sweeting
53d5082a2d requested changes 2017-03-23 13:42:39 -04:00
Nick Sweeting
4dc1225807 Add helpful hint on io function for beginners 2017-03-23 13:17:21 -04:00
Corey Farwell
e7b0f2badf Remove function invokation parens from documentation links.
This was never established as a convention we should follow in the 'More
API Documentation Conventions' RFC:

https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md
2017-03-13 21:43:18 -04:00
Simon Sapin
031f9b15df Only keep one copy of the UTF8_CHAR_WIDTH table.
… instead of one of each of libcore and libstd_unicode.

Move the `utf8_char_width` function to `core::str`
under the `str_internals` unstable feature.
2017-03-01 23:25:27 +01:00
Oliver Middleton
9128f6100c Fix a few impl stability attributes
The versions show up in rustdoc.
2017-01-29 13:31:47 +00:00
Utkarsh Kukreti
19724d34d2 libstd: mention ? operator instead of removing try! macro reference 2017-01-22 21:07:38 +05:30
Utkarsh Kukreti
53106df896 libstd: update std::io module documentation to not mention try!
We're not using it in the examples anymore.
2017-01-22 21:07:38 +05:30
Utkarsh Kukreti
9d912b683a libstd: replace all try! with ? in documentation examples
See #38644.
2017-01-22 21:07:38 +05:30
Steve Klabnik
3c26ff450c Rollup merge of #38505 - estebank:why-lines, r=frewsxcv
Docs: Explain why/when `.lines()` returns an error

Fix #37744.
2016-12-24 14:29:26 -05:00
Esteban Küber
24334a03a3 Docs: Explain why/when .lines() returns an error 2016-12-20 17:09:36 -08:00
Corey Farwell
86fc63e62d Implement fmt::Debug for all structures in libstd.
Part of https://github.com/rust-lang/rust/issues/31869.

Also turn on the `missing_debug_implementations` lint at the crate
level.
2016-12-18 14:55:14 -08:00
Aaron Turon
fce6af2a67 Stabilize std::io::Take::into_inner 2016-12-15 10:56:56 -08:00
Corey Farwell
274777a158 Rename 'librustc_unicode' crate to 'libstd_unicode'.
Fixes #26554.
2016-11-30 01:24:01 -05:00
Guillaume Gomez
36e6f4be31 add missing urls on io structs 2016-11-05 00:48:03 +01:00
Brian Anderson
6d54cd4b2c std: Move a plattform-specific constant to sys::stdio 2016-11-01 17:08:24 +00:00
Guillaume Gomez
b12f63b17a Typos in some linkage 2016-10-18 20:52:15 +02:00
Guillaume Gomez
b5bedfcd3f Add missing urls in io module 2016-10-11 17:48:14 +02:00
Corey Farwell
159b8c4e5a Update unstable attr to reference tracking issue. 2016-10-02 20:39:17 -04:00
bors
8b00355119 Auto merge of #36339 - brson:emscripten-new, r=alexcrichton
Working asmjs and wasm targets

This patch set results in a working standard library for the asmjs-unknown-emscripten and wasm32-unknown-emscripten targets. It is based on the work of @badboy and @rschulman.

It does a few things:

- Updates LLVM with the emscripten [fastcomp](https://github.com/rust-lang/llvm/pull/50) patches, which include the pnacl IR legalizer and the asm.js backend. This patch is thought not to have any significant effect on existing targets.
- Teaches rustbuild to correctly link C code with emscripten
- Updates gcc-rs to work correctly with emscripten
- Teaches rustbuild to run crate tests for emscripten with node
- Modifies Thread::new to return an error on emscripten, to facilitate debugging a common failure mode
- Modifies libtest to run in single-threaded mode for emscripten
- Ignores a host of tests that don't work yet, mostly dealing with threads and I/O
- Updates libc with wasm32 definitions (presently the same as asmjs)
- Adds a wasm32-unknown-emscripten target that feeds the output of LLVM's asmjs backend through emcc to generate wasm

Notes and caveats:

- This is only known to work with `--enable-rustbuild`.
- The wasm32 target can't be tested correctly yet because of issues in compiletest and limitations in node https://github.com/kripken/emscripten/issues/4542, but hello.rs does seem to work when run on node via the binaryen interpreter
- This requires an up to date installation of the emscripten sdk from its incoming branch
- Unwinding is very broken
- When enabling the emscripten targets jemalloc is disabled for all targets, which results in test failures for the host

Next steps are to fix the jemalloc issue, start building the two emscripten targets on the auto builders, then start producing nightlies.

https://github.com/rust-lang/rust/issues/36317 tracks work on this.

Fixes https://github.com/rust-lang/rust/issues/36515
Fixes https://github.com/rust-lang/rust/issues/36515
Fixes https://github.com/rust-lang/rust/issues/36356
2016-09-30 19:00:36 -07:00
Brian Anderson
9c4a01ee9e Ignore lots and lots of std tests on emscripten 2016-09-30 14:02:48 -07:00
Tomasz Miąsko
1e8f692461 Fix BufRead::{read_until, read_line} documentation. 2016-09-30 11:58:10 +02:00
Tomasz Miąsko
26f9949bf6 [std::io::Chain] Mark first as done only when reading into non-zero length buffer.
Fixes #36771.
2016-09-27 17:55:20 +02:00
Corey Farwell
ced1252654 Introduce into_inner method on std::io::Take.
https://github.com/rust-lang/rust/issues/23755
2016-08-26 11:02:32 -07:00
Jeffrey Seyfried
9a2c8783d9 Use #[prelude_import] in libstd. 2016-08-24 22:12:48 +00:00
Nick Cameron
e6cc4c5d13 Fix links 2016-08-18 15:43:35 +12:00
Guillaume Gomez
fda473f00f Add urls in std::io types 2016-07-30 13:38:04 +02:00
Guillaume Gomez
2bed205d3b Add io::Take doc example 2016-07-30 13:30:41 +02:00
Aaron Gallagher
e7d423a3bf Retry on EINTR in Bytes and Chars.
Since Bytes and Chars called directly into Read::read, they didn't use
any of the retrying wrappers. This allows both iterator types to retry.
2016-05-30 19:17:32 -07:00
Tshepang Lekhonkhobe
9f935c8dd8 doc: binding not needed 2016-05-06 21:04:40 +02:00
Tshepang Lekhonkhobe
8e9008dc30 doc: mut not needed 2016-05-06 21:04:40 +02:00
Ryman
9fe3c065b0 libstd: correct the link to functions in io module documentation
Currently the link refers to it's own section of the documentation rather than the list of functions generated by rustdoc.
2016-05-02 15:54:54 +01:00
Steve Klabnik
78ab18199d Rollup merge of #32855 - troplin:take-bufread-fix, r=alexcrichton
Don't read past limit for in BufRead instance of Take

Similar to `Read::read`, `BufRead::fill_buf` impl of `Take` should not call `inner.fill_buf` if the limit is already reached.
2016-04-14 14:49:09 -04:00
Alex Crichton
552eda70d3 std: Stabilize APIs for the 1.9 release
This commit applies all stabilizations, renamings, and deprecations that the
library team has decided on for the upcoming 1.9 release. All tracking issues
have gone through a cycle-long "final comment period" and the specific APIs
stabilized/deprecated are:

Stable

* `std::panic`
* `std::panic::catch_unwind` (renamed from `recover`)
* `std::panic::resume_unwind` (renamed from `propagate`)
* `std::panic::AssertUnwindSafe` (renamed from `AssertRecoverSafe`)
* `std::panic::UnwindSafe` (renamed from `RecoverSafe`)
* `str::is_char_boundary`
* `<*const T>::as_ref`
* `<*mut T>::as_ref`
* `<*mut T>::as_mut`
* `AsciiExt::make_ascii_uppercase`
* `AsciiExt::make_ascii_lowercase`
* `char::decode_utf16`
* `char::DecodeUtf16`
* `char::DecodeUtf16Error`
* `char::DecodeUtf16Error::unpaired_surrogate`
* `BTreeSet::take`
* `BTreeSet::replace`
* `BTreeSet::get`
* `HashSet::take`
* `HashSet::replace`
* `HashSet::get`
* `OsString::with_capacity`
* `OsString::clear`
* `OsString::capacity`
* `OsString::reserve`
* `OsString::reserve_exact`
* `OsStr::is_empty`
* `OsStr::len`
* `std::os::unix::thread`
* `RawPthread`
* `JoinHandleExt`
* `JoinHandleExt::as_pthread_t`
* `JoinHandleExt::into_pthread_t`
* `HashSet::hasher`
* `HashMap::hasher`
* `CommandExt::exec`
* `File::try_clone`
* `SocketAddr::set_ip`
* `SocketAddr::set_port`
* `SocketAddrV4::set_ip`
* `SocketAddrV4::set_port`
* `SocketAddrV6::set_ip`
* `SocketAddrV6::set_port`
* `SocketAddrV6::set_flowinfo`
* `SocketAddrV6::set_scope_id`
* `<[T]>::copy_from_slice`
* `ptr::read_volatile`
* `ptr::write_volatile`
* The `#[deprecated]` attribute
* `OpenOptions::create_new`

Deprecated

* `std::raw::Slice` - use raw parts of `slice` module instead
* `std::raw::Repr` - use raw parts of `slice` module instead
* `str::char_range_at` - use slicing plus `chars()` plus `len_utf8`
* `str::char_range_at_reverse` - use slicing plus `chars().rev()` plus `len_utf8`
* `str::char_at` - use slicing plus `chars()`
* `str::char_at_reverse` - use slicing plus `chars().rev()`
* `str::slice_shift_char` - use `chars()` plus `Chars::as_str`
* `CommandExt::session_leader` - use `before_exec` instead.

Closes #27719
cc #27751 (deprecating the `Slice` bits)
Closes #27754
Closes #27780
Closes #27809
Closes #27811
Closes #27830
Closes #28050
Closes #29453
Closes #29791
Closes #29935
Closes #30014
Closes #30752
Closes #31262
cc #31398 (still need to deal with `before_exec`)
Closes #31405
Closes #31572
Closes #31755
Closes #31756
2016-04-11 08:57:53 -07:00
Tobias Müller
a3329f5452 Don't read past limit for in BufRead instance of Take 2016-04-09 14:23:11 +02:00
Steven Fackler
8128817119 Drop the default buffer size to 8K
The 64k capacity was picked by me a couple of years ago in the initial
implementation of buffered IO adaptors:
https://github.com/rust-lang/rust/pull/9091/files#diff-b131eeef531ad098b32f49695a031008R62.
64K was picked for symmetry with libuv, which we no longer use.

64K is *way* larger than the default size of any other language that I
can find. C, C++, and Java default to 8K, and Go defaults to 4K. There
have been a variety of issues filed relating to this such as #31885.

Closes #31885
2016-04-02 22:24:42 -07:00
bors
161c541afd Auto merge of #32541 - troplin:chain-bufread, r=alexcrichton
Implement BufRead for Chain

Addresses #32536
2016-03-29 01:21:30 -07:00
Tobias Müller
f611e44662 Fix formatting 2016-03-28 22:40:46 +02:00
Tobias Müller
6489fb40de Use ? instead of try!, add some basic tests 2016-03-28 21:37:36 +02:00
Tobias Müller
373f93a629 Implement BufRead for Chain 2016-03-28 01:28:03 +02:00
mitaa
6a76872d71 Extend linkchecker with anchor checking
This adds checks to ensure that:
* link anchors refer to existing id's on the target page
* id's are unique within an html document
* page redirects are valid
2016-03-27 00:21:00 +01:00
Jorge Aparicio
0f02309e4b try! -> ?
Automated conversion using the untry tool [1] and the following command:

```
$ find -name '*.rs' -type f | xargs untry
```

at the root of the Rust repo.

[1]: https://github.com/japaric/untry
2016-03-22 22:01:37 -05:00
Alex Crichton
b53764c73b std: Clean out deprecated APIs
Removes all unstable and deprecated APIs prior to the 1.8 release. All APIs that
are deprecated in the 1.8 release are sticking around for the rest of this
cycle.

Some notable changes are:

* The `dynamic_lib` module was moved into `rustc_back` as the compiler still
  relies on a few bits and pieces.
* The `DebugTuple` formatter now special-cases an empty struct name with only
  one field to append a trailing comma.
2016-03-12 12:31:13 -08:00
Manish Goregaokar
acea6fc1cb Rollup merge of #31904 - bluss:writer-formatter-error, r=alexcrichton
Make sure formatter errors are emitted by the default Write::write_fmt

Previously, if an error was returned from the formatter that did not
originate in an underlying writer error, Write::write_fmt would return
successfully even if the formatting did not complete (was interrupted by
an `fmt::Error` return).

Now we choose to emit an io::Error with kind Other for formatter errors.

Since this may reveal error returns from `write!()` and similar that
previously passed silently, it's a kind of a [breaking-change].

Fixes #31879
2016-02-26 17:03:42 +05:30
Ulrik Sverdrup
6cfafad3c5 Make sure formatter errors are emitted by the default Write::write_fmt
Previously, if an error was returned from the formatter that did not
originate in an underlying writer error, Write::write_fmt would return
successfully even if the formatting did not complete (was interrupted by
an `fmt::Error` return).

Now we choose to emit an io::Error with kind Other for formatter errors.

Since this may reveal error returns from `write!()` and similar that
previously passed silently, it's a kind of a [breaking-change].
2016-02-26 02:59:25 +01:00
Aaron Turon
a92ee0f664 Register new snapshots 2016-02-23 07:31:16 -08:00
bors
e51661b888 Auto merge of #30898 - petrochenkov:tvarfstab, r=alexcrichton
This wasn't done in https://github.com/rust-lang/rust/pull/29083 because attributes weren't parsed on fields of tuple variant back then.

r? @alexcrichton
2016-01-15 15:39:39 +00:00
Vadim Petrochenkov
8ea7b88c9b Require stability annotations on fields of tuple variants 2016-01-14 17:08:35 +03:00
Oliver Middleton
01cbdf4481 Fix some broken and missing links in the docs 2016-01-13 23:19:24 +00:00
Nathan
3e9d5fea48 Adjusted heading and created dedicated section in std::io docs 2016-01-02 00:27:16 -05:00
Tshepang Lekhonkhobe
2a7b6834d2 doc: fix grammar 2015-12-30 19:54:06 +02:00
Florian Hahn
e27cbeff37 Fix warnings when compiling stdlib with --test 2015-12-29 16:07:01 +01:00
Florian Hartwig
0fcf4710e9 Fix links in docs for std::io 2015-12-26 00:11:20 +01:00
Florian Hahn
de3e843d24 Use memchr in libstd where possible, closes #30076 2015-12-18 13:32:14 +01:00
Tshepang Lekhonkhobe
33d43c1e34 doc: these are just renames, so avoid duplication 2015-12-09 01:30:08 +02:00
Alex Crichton
464cdff102 std: Stabilize APIs for the 1.6 release
This commit is the standard API stabilization commit for the 1.6 release cycle.
The list of issues and APIs below have all been through their cycle-long FCP and
the libs team decisions are listed below

Stabilized APIs

* `Read::read_exact`
* `ErrorKind::UnexpectedEof` (renamed from `UnexpectedEOF`)
* libcore -- this was a bit of a nuanced stabilization, the crate itself is now
  marked as `#[stable]` and the methods appearing via traits for primitives like
  `char` and `str` are now also marked as stable. Note that the extension traits
  themeselves are marked as unstable as they're imported via the prelude. The
  `try!` macro was also moved from the standard library into libcore to have the
  same interface. Otherwise the functions all have copied stability from the
  standard library now.
* The `#![no_std]` attribute
* `fs::DirBuilder`
* `fs::DirBuilder::new`
* `fs::DirBuilder::recursive`
* `fs::DirBuilder::create`
* `os::unix::fs::DirBuilderExt`
* `os::unix::fs::DirBuilderExt::mode`
* `vec::Drain`
* `vec::Vec::drain`
* `string::Drain`
* `string::String::drain`
* `vec_deque::Drain`
* `vec_deque::VecDeque::drain`
* `collections::hash_map::Drain`
* `collections::hash_map::HashMap::drain`
* `collections::hash_set::Drain`
* `collections::hash_set::HashSet::drain`
* `collections::binary_heap::Drain`
* `collections::binary_heap::BinaryHeap::drain`
* `Vec::extend_from_slice` (renamed from `push_all`)
* `Mutex::get_mut`
* `Mutex::into_inner`
* `RwLock::get_mut`
* `RwLock::into_inner`
* `Iterator::min_by_key` (renamed from `min_by`)
* `Iterator::max_by_key` (renamed from `max_by`)

Deprecated APIs

* `ErrorKind::UnexpectedEOF` (renamed to `UnexpectedEof`)
* `OsString::from_bytes`
* `OsStr::to_cstring`
* `OsStr::to_bytes`
* `fs::walk_dir` and `fs::WalkDir`
* `path::Components::peek`
* `slice::bytes::MutableByteVector`
* `slice::bytes::copy_memory`
* `Vec::push_all` (renamed to `extend_from_slice`)
* `Duration::span`
* `IpAddr`
* `SocketAddr::ip`
* `Read::tee`
* `io::Tee`
* `Write::broadcast`
* `io::Broadcast`
* `Iterator::min_by` (renamed to `min_by_key`)
* `Iterator::max_by` (renamed to `max_by_key`)
* `net::lookup_addr`

New APIs (still unstable)

* `<[T]>::sort_by_key` (added to mirror `min_by_key`)

Closes #27585
Closes #27704
Closes #27707
Closes #27710
Closes #27711
Closes #27727
Closes #27740
Closes #27744
Closes #27799
Closes #27801
cc #27801 (doesn't close as `Chars` is still unstable)
Closes #28968
2015-12-05 15:09:44 -08:00
Vadim Petrochenkov
7e2ffc7090 Add missing annotations and some tests 2015-11-18 01:24:21 +03:00
Vadim Petrochenkov
2ef07f0519 Remove stability annotations from trait impl items
Remove `stable` stability annotations from inherent impls
2015-11-06 00:13:46 +03:00
Kevin Yap
c3058a25d8 Fix minor issues with std::io docs 2015-10-17 12:35:23 -07:00
Cristi Cobzarenco
4b308b44e1 typos: fix a grabbag of typos all over the place 2015-10-08 19:49:31 +01:00
Steve Klabnik
367f46d793 Make note of performance implications of Read
Fixes #28073
2015-09-30 13:35:33 -04:00
Alex Crichton
48615a68fb std: Account for CRLF in {str, BufRead}::lines
This commit is an implementation of [RFC 1212][rfc] which tweaks the behavior of
the `str::lines` and `BufRead::lines` iterators. Both iterators now account for
`\r\n` sequences in addition to `\n`, allowing for less surprising behavior
across platforms (especially in the `BufRead` case). Splitting *only* on the
`\n` character can still be achieved with `split('\n')` in both cases.

The `str::lines_any` function is also now deprecated as `str::lines` is a
drop-in replacement for it.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1212-line-endings.md

Closes #28032
2015-09-03 23:01:41 -07:00
bors
4bb90232da Auto merge of #27588 - cesarb:read_all, r=alexcrichton
This implements the proposed "read_exact" RFC (https://github.com/rust-lang/rfcs/pull/980).

Tracking issue: https://github.com/rust-lang/rust/issues/27585
2015-08-30 05:59:49 +00:00
Cesar Eduardo Barros
73e7a72695 Add issue number to read_exact unstable declarations 2015-08-28 06:33:50 -03:00
Cesar Eduardo Barros
ff81920f03 Implement read_exact for the Read trait
This implements the proposed "read_exact" RFC
(https://github.com/rust-lang/rfcs/pull/980).
2015-08-24 19:10:08 -03:00
Remi Rampin
f70faa91eb Remove repetition in Seek::seek() doc 2015-08-18 10:01:41 -04:00
Alex Crichton
5f625620b5 std: Add issues to all unstable features 2015-08-15 18:09:17 -07:00
Alex Crichton
8d90d3f368 Remove all unstable deprecated functionality
This commit removes all unstable and deprecated functions in the standard
library. A release was recently cut (1.3) which makes this a good time for some
spring cleaning of the deprecated functions.
2015-08-12 14:55:17 -07:00
Simon Sapin
7b2dd1fb28 Docs: clarify return value of std::io::Seek::seek 2015-08-02 14:15:00 +02:00
Steve Klabnik
3c7719580c Rollup merge of #27327 - steveklabnik:fix_take, r=alexcrichton
This only reads five bytes, so don't use a ten byte buffer, that's confusing.

r? @alexcrichton
2015-07-29 10:30:34 -04:00
Alex Crichton
b3aa1a6d4a std: Deprecate a number of unstable features
Many of these have long since reached their stage of being obsolete, so this
commit starts the removal process for all of them. The unstable features that
were deprecated are:

* cmp_partial
* fs_time
* hash_default
* int_slice
* iter_min_max
* iter_reset_fuse
* iter_to_vec
* map_in_place
* move_from
* owned_ascii_ext
* page_size
* read_and_zero
* scan_state
* slice_chars
* slice_position_elem
* subslice_offset
2015-07-27 16:38:25 -07:00
Steve Klabnik
e88ee957ed Fix buffer length in std::io::take
This only reads five bytes, so don't use a ten byte buffer, that's confusing.
2015-07-27 11:43:15 -04:00
Steve Klabnik
932f0bb5c3 Rollup merge of #27167 - steveklabnik:doc_std_io_take, r=alexcrichton
Better and more consistent links to their creators.
2015-07-22 12:56:51 -04:00
Steve Klabnik
558008b0f0 Rollup merge of #27157 - steveklabnik:doc_std_io_iterators, r=alexcrichton
Make them all consistent and link up the documentation.

r? @alexcrichton
2015-07-22 12:56:50 -04:00
Steve Klabnik
fa28192312 Write better docs for std::io
This is the landing page for all of io, so we should have more than just
a sentence here.
2015-07-20 18:07:35 -04:00
Steve Klabnik
9e18326291 Update docs for take and broadcast
Better and more consistent links to their creators.
2015-07-20 16:47:58 -04:00
Steve Klabnik
27fc0f21c4 Document iterators in std::io
Make them all consistent and link up the documentation.
2015-07-20 13:16:57 -04:00
Steve Klabnik
48ddf90682 Merge branch 'doc_io_traits_enums' of https://github.com/steveklabnik/rust into rollup_central 2015-07-16 17:54:44 -04:00
Steve Klabnik
4fb02a391d More docs for std::io free functions. 2015-07-16 13:38:20 -04:00
Steve Klabnik
664449ac6e More docs for std::io::Write 2015-07-16 13:38:16 -04:00
Steve Klabnik
092f4ed2de More docs for std::io::Seek 2015-07-16 13:38:15 -04:00
Steve Klabnik
ff664f3c6c More docs for std::io::Read 2015-07-16 13:38:11 -04:00
Steve Klabnik
2074b19bdc More docs for std::io::BufRead 2015-07-16 13:38:07 -04:00
Alisdair Owens
98f287240f Add specializations of read_to_end for Stdin, TcpStream and File,
allowing them to read into a buffer containing uninitialized data,
rather than pay the cost of zeroing.
2015-07-15 21:30:18 +01:00
Ulrik Sverdrup
6ac0ba3c3a Improve Vec::resize so that it can be used in Read::read_to_end
We needed a more efficient way to zerofill the vector in read_to_end.
This to reduce the memory intialization overhead to a minimum.

Use the implementation of `std::vec::from_elem` (used for the vec![]
macro) for Vec::resize as well. For simple element types like u8, this
compiles to memset, so it makes Vec::resize much more efficient.
2015-07-08 19:40:40 +02:00
Tshepang Lekhonkhobe
4ce7901a5a doc: remove repeated word 2015-06-23 02:48:37 +02:00
Mikhail Zabaluev
1d67cef6d2 std::io: New ErrorKind value InvalidData
This takes the cases from InvalidInput where a data format error
was encountered. This is different from the documented semantics
of InvalidInput, which more likely indicate a programming error.
2015-05-29 22:23:46 +03:00
Eduard Burtescu
377b0900ae Use const fn to abstract away the contents of UnsafeCell & friends. 2015-05-27 11:19:03 +03:00
Tshepang Lekhonkhobe
1bb16fcd5f doc: fix io::Write::write typo 2015-05-25 01:59:04 +02:00
Matt Brubeck
d776191d4a Add example code and cross-link to BufReader docs 2015-05-19 10:41:19 -07:00
Corey Farwell
685f557729 Update docs to stop referencing BufReadExt 2015-05-10 16:32:18 -04:00
Corey Farwell
554da45762 Replaces instanced of 'an UTF' with 'a UTF'
Even spelled out, one would say 'a Universal Character Set'
2015-04-30 21:38:01 -04:00
Tamir Duberstein
69abc12b00 Register new snapshots 2015-04-28 17:23:45 -07:00
kwantam
29d1252e4d deprecate Unicode functions that will be moved to crates.io
This patch
1. renames libunicode to librustc_unicode,
2. deprecates several pieces of libunicode (see below), and
3. removes references to deprecated functions from
   librustc_driver and libsyntax. This may change pretty-printed
   output from these modules in cases involving wide or combining
   characters used in filenames, identifiers, etc.

The following functions are marked deprecated:

1. char.width() and str.width():
   --> use unicode-width crate

2. str.graphemes() and str.grapheme_indices():
   --> use unicode-segmentation crate

3. str.nfd_chars(), str.nfkd_chars(), str.nfc_chars(), str.nfkc_chars(),
   char.compose(), char.decompose_canonical(), char.decompose_compatible(),
   char.canonical_combining_class():
   --> use unicode-normalization crate
2015-04-16 17:03:05 -04:00
bors
288809c8f3 Auto merge of #23682 - tamird:DRY-is-empty, r=alexcrichton
r? @alexcrichton
2015-04-16 03:22:21 +00:00
Ms2ger
9a5a47eddc Fix some typos. 2015-04-15 13:37:55 +02:00
Tamir Duberstein
10f15e72e6 Negative case of len() -> is_empty()
`s/([^\(\s]+\.)len\(\) [(?:!=)>] 0/!$1is_empty()/g`
2015-04-14 20:26:03 -07:00
Alex Crichton
ae7959d298 rollup merge of #24377: apasel422/docs
Conflicts:
	src/libstd/net/ip.rs
	src/libstd/sys/unix/fs.rs
	src/libstd/sys/unix/mod.rs
	src/libstd/sys/windows/mod.rs
2015-04-14 10:56:57 -07:00
Simonas Kazlauskas
32f7e673c8 Refine read_to_end documentation 2015-04-13 22:41:41 +03:00
Andrew Paseltiner
6fa16d6a47 pluralize doc comment verbs and add missing periods 2015-04-13 13:57:51 -04:00
Matt Brubeck
6e86c636e5 Remove outdated notice from BufRead::lines docs.
There is no `read_string` function, and `lines` never returns an error.
2015-04-06 08:40:11 -07:00
Manish Goregaokar
abd747cd15 Rollup merge of #23847 - bcoopers:read_clarification, r=sfackler
This introduces no functional changes except for reducing a few unnecessary operations and variables.  Vec has the behavior that, if you request space past the capacity with reserve(), it will round up to the nearest power of 2.  What that effectively means is that after the first call to reserve(16), we are doubling our capacity every time.  So using the DEFAULT_BUF_SIZE and doubling cap_size() here is meaningless and has no effect on the call to reserve().

Note that with #23842 implemented this will hopefully have a clearer API and less of a need for commenting.  If #23842 is not implemented then the most clear implementation would be to call reserve_exact(buf.capacity()) at every step (and making sure that buf.capacity() is not zero at the beginning of the function of course).

Edit- functional change now introduced.  We will now zero 16 bytes of the vector first, then double to 32, then 64, etc. until we read 64kB.  This stops us from zeroing the entire vector when we double it, some of which may be wasted work.  Reallocation still follows the doubling strategy, but the responsibility has been moved to vec.extend(), which calls reserve() and push_back().
2015-04-02 00:40:38 +05:30
Alex Crichton
72f59732d7 Test fixes and rebase conflicts, round 3 2015-03-31 17:39:24 -07:00
Alex Crichton
50b3ecf3bc rollup merge of #23919: alexcrichton/stabilize-io-error
Conflicts:
	src/libstd/fs/tempdir.rs
	src/libstd/io/error.rs
2015-03-31 16:18:55 -07:00
Alex Crichton
ac77392f8a std: Stabilize last bits of io::Error
This commit stabilizes a few remaining bits of the `io::Error` type:

* The `Error::new` method is now stable. The last `detail` parameter was removed
  and the second `desc` parameter was generalized to `E: Into<Box<Error>>` to
  allow creating an I/O error from any form of error. Currently there is no form
  of downcasting, but this will be added in time.

* An implementation of `From<&str> for Box<Error>` was added to liballoc to
  allow construction of errors from raw strings.

* The `Error::raw_os_error` method was stabilized as-is.

* Trait impls for `Clone`, `Eq`, and `PartialEq` were removed from `Error` as it
  is not possible to use them with trait objects.

This is a breaking change due to the modification of the `new` method as well as
the removal of the trait implementations for the `Error` type.

[breaking-change]
2015-03-31 16:12:48 -07:00
Aaron Turon
b9ab5fe7c2 Stabilize a few remaining stragglers
* The `io::Seek` trait, and `SeekFrom` enum.
* The `Iterator::{partition, unsip}` methods.
* The `Vec::into_boxed_slice` method.
* The `LinkedList::append` method.
* The `{or_insert, or_insert_with` methods in the `Entry` APIs.
2015-03-31 15:22:21 -07:00
bcoopers
240734c31e Only zero at most 64k at a time. We still use the doubling
reallocation strategy since extend() calls reserve() and/or
push() for us.
2015-03-30 13:59:32 -04:00
bcoopers
8d3e55908a Clearer wording 2015-03-29 19:29:11 -04:00
bcoopers
2982fe39ad 80 character line limit 2015-03-29 19:23:46 -04:00
bcoopers
45c10db41f Clarified and simplified algorithm for increasing size of buffer in
read_to_end()
2015-03-29 19:08:53 -04:00
bors
92f3d9a6b4 Auto merge of #23820 - sfackler:fast_read_to_end, r=alexcrichton
with_end_to_cap is enormously expensive now that it's initializing
memory since it involves 64k allocation + memset on every call. This is
most noticable when calling read_to_end on very small readers, where the
new version if **4 orders of magnitude** faster.

BufReader also depended on with_end_to_cap so I've rewritten it in its
original form.

As a bonus, converted the buffered IO struct Debug impls to use the
debug builders.

I first came across this in sfackler/rust-postgres#106 where a user reported a 10x performance regression. A call to read_to_end turned out to be the culprit: 9cd413d42c.

The new version differs from the old in a couple of ways. The buffer size used is now adaptive. It starts at 32 bytes and doubles each time EOF hasn't been reached up to a limit of 64k. In addition, the buffer is only truncated when EOF or an error has been reached, rather than after every call to read as was the case for the old implementation.

I wrote up a benchmark to compare the old version and new version: https://gist.github.com/sfackler/e979711b0ee2f2063462

It tests a couple of different cases: a high bandwidth reader, a low bandwidth reader, and a low bandwidth reader that won't return more than 10k per call to `read`. The high bandwidth reader should be analagous to use cases when reading from e.g. a `BufReader` or `Vec`, and the low bandwidth readers should be analogous to reading from something like a `TcpStream`.

Of special note, reads from a high bandwith reader containing 4 bytes are now *4,495 times faster*. 
```
~/foo ❯ cargo bench
   Compiling foo v0.0.1 (file:///home/sfackler/foo)
     Running target/release/foo-7498d7dd7faecf5c

running 13 tests
test test_new ... ignored
test new_delay_4      ... bench:    230768 ns/iter (+/- 14812)
test new_delay_4_cap  ... bench:    231421 ns/iter (+/- 7211)
test new_delay_5m     ... bench:  14495370 ns/iter (+/- 4008648)
test new_delay_5m_cap ... bench:  73127954 ns/iter (+/- 59908587)
test new_nodelay_4    ... bench:        83 ns/iter (+/- 2)
test new_nodelay_5m   ... bench:  12527237 ns/iter (+/- 335243)
test std_delay_4      ... bench:    373095 ns/iter (+/- 12613)
test std_delay_4_cap  ... bench:    374190 ns/iter (+/- 19611)
test std_delay_5m     ... bench:  17356012 ns/iter (+/- 15906588)
test std_delay_5m_cap ... bench: 883555035 ns/iter (+/- 205559857)
test std_nodelay_4    ... bench:    144937 ns/iter (+/- 2448)
test std_nodelay_5m   ... bench:  16095893 ns/iter (+/- 3315116)

test result: ok. 0 passed; 0 failed; 1 ignored; 12 measured
```

r? @alexcrichton
2015-03-29 19:47:18 +00:00
Steven Fackler
ccb4e8423e Fix massive performance issue in read_to_end
with_end_to_cap is enormously expensive now that it's initializing
memory since it involves 64k allocation + memset on every call. This is
most noticable when calling read_to_end on very small readers, where the
new version if **4 orders of magnitude** faster.

BufReader also depended on with_end_to_cap so I've rewritten it in its
original form.

As a bonus, converted the buffered IO struct Debug impls to use the
debug builders.

Fixes #23815
2015-03-28 22:32:08 -07:00
Steven Fackler
d502f4221f Remove IteratorExt
All methods are inlined into Iterator with `Self: Sized` bounds to make
sure Iterator is still object safe.

[breaking-change]
2015-03-28 13:53:45 -07:00
Alex Crichton
e71221f327 std: Stabilize BufRead::split
Now that `<[_]>::split` is an inherent method, it will trump `BufRead::split`
when `BufRead` is in scope, so there is no longer a conflict. As a result,
calling `slice.split()` will probably always give you precisely what you want!
2015-03-26 16:54:15 -07:00
Manish Goregaokar
5535767228 Rollup merge of #23664 - bluss:std-docs, r=steveklabnik
Main motivation was to update docs for the removal or "demotion" of certain extension traits. The update to the slice docs was larger, since the text was largely outdated.
2015-03-25 17:12:13 +05:30
Alex Crichton
5ed8733ea3 rollup merge of #23668: alexcrichton/io-zero
This commit alters the behavior of the `Read::read_to_end()` method to zero all
memory instead of passing an uninitialized buffer to `read`. This change is
motivated by the [discussion on the internals forum][discuss] where the
conclusion has been that the standard library will not expose uninitialized
memory.

[discuss]: http://internals.rust-lang.org/t/uninitialized-memory/1652

Closes #20314
2015-03-24 14:50:48 -07:00
Ulrik Sverdrup
227d30414c std: Update docs for removal of ReadExt, WriteExt 2015-03-24 22:20:35 +01:00
Alex Crichton
4ccf374b4a std: Zero memory when calling read_to_end()
This commit alters the behavior of the `Read::read_to_end()` method to zero all
memory instead of passing an uninitialized buffer to `read`. This change is
motivated by the [discussion on the internals forum][discuss] where the
conclusion has been that the standard library will not expose uninitialized
memory.

[discuss]: http://internals.rust-lang.org/t/uninitialized-memory/1652

Closes #20314
2015-03-24 13:42:19 -07:00
Steve Klabnik
a5e1cbe191 Beef up BufRead::consume documentation.
Fixes #23196
2015-03-23 13:42:39 -04:00
Manish Goregaokar
90e7f472f7 Rollup merge of #23499 - mbrubeck:doc-edit, r=huonw
Multiple people have been suprised by this aspect of read_line's behavior, which is not obvious from the docs.
2015-03-20 12:43:13 +05:30
Matt Brubeck
a7a28d7091 Clarify in docs that BufRead::read_line appends
Multiple people have been suprised by this aspect of read_line's behavior,
which is not obvious from the docs.
2015-03-18 17:38:11 -07:00
Alex Crichton
fccf5a0005 Register new snapshots 2015-03-18 16:32:32 -07:00
Vadim Petrochenkov
dccd17d23e Remove the newly introduced trait impls for fixed-size arrays and use &b"..."[..] instead. 2015-03-18 09:16:08 +03:00
Manish Goregaokar
925d5ad715 Rollup merge of #23415 - alexcrichton:stabilize-flush, r=aturon
The [associated RFC][rfc] for possibly splitting out `flush` has been closed and
as a result there are no more blockers for stabilizing this method, so this
commit marks the method as such.

[rfc]: https://github.com/rust-lang/rfcs/pull/950
2015-03-17 15:20:03 +05:30
Jorge Aparicio
8afcaabee3 impl<T> *const T, impl<T> *mut T 2015-03-16 21:57:42 -05:00
Jorge Aparicio
633c593bc3 impl<T> [T] 2015-03-16 21:56:31 -05:00