summary refs log tree commit diff
path: root/src/libstd/io
AgeCommit message (Collapse)AuthorLines
2015-09-14Auto merge of #28256 - petrochenkov:conv, r=alexcrichtonbors-1/+5
This patch transforms functions of the form ``` fn f<Generic: AsRef<Concrete>>(arg: Generic) { let arg: &Concrete = arg.as_ref(); // Code using arg } ``` to the next form: ``` #[inline] fn f<Generic: AsRef<Concrete>>(arg: Generic) { fn f_inner(arg: &Concrete) { // Code using arg } f_inner(arg.as_ref()); } ``` Therefore, most of the code is concrete and not duplicated during monomorphisation (unless inlined) and only the tiny bit of conversion code is duplicated. This method was mentioned by @aturon in the Conversion Traits RFC (https://github.com/rust-lang/rfcs/blame/master/text/0529-conversion-traits.md#L249) and similar techniques are not uncommon in C++ template libraries. This patch goes to the extremes and applies the transformation even to smaller functions<sup>1</sup> for purity of the experiment. *Some of them can be rolled back* if considered too ridiculous. <sup>1</sup> However who knows how small are these functions are after inlining and everything. The functions in question are mostly `fs`/`os` functions and not used especially often with variety of argument types, so the code size reduction is rather small (but consistent). Here are the sizes of stage2 artifacts before and after the patch: https://gist.github.com/petrochenkov/e76a6b280f382da13c5d https://gist.github.com/petrochenkov/6cc28727d5256dbdfed0 Note: All the `inner` functions are concrete and unavailable for cross-crate inlining, some of them may need `#[inline]` annotations in the future. r? @aturon
2015-09-11std: Internalize almost all of `std::rt`Alex Crichton-2/+2
This commit does some refactoring to make almost all of the `std::rt` private. Specifically, the following items are no longer part of its API: * DEFAULT_ERROR_CODE * backtrace * unwind * args * at_exit * cleanup * heap (this is just alloc::heap) * min_stack * util The module is now tagged as `#[doc(hidden)]` as the only purpose it's serve is an entry point for the `panic!` macro via the `begin_unwind` and `begin_unwind_fmt` reexports.
2015-09-09Reduce code bloat from conversion traits in function parametersVadim Petrochenkov-1/+5
2015-09-08some more clippy-based improvementsAndre Bogus-4/+4
2015-09-03std: Account for CRLF in {str, BufRead}::linesAlex Crichton-4/+7
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-03Use `null()`/`null_mut()` instead of `0 as *const T`/`0 as *mut T`Vadim Petrochenkov-1/+2
2015-08-30Auto merge of #27588 - cesarb:read_all, r=alexcrichtonbors-0/+140
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-28Add issue number to read_exact unstable declarationsCesar Eduardo Barros-2/+2
2015-08-24Implement read_exact for the Read traitCesar Eduardo Barros-0/+140
This implements the proposed "read_exact" RFC (https://github.com/rust-lang/rfcs/pull/980).
2015-08-19Improve std::io::ErrorKindSteve Klabnik-0/+3
Hopefully make this distinction a little more clear. Fixes #27637
2015-08-18Remove repetition in Seek::seek() docRemi Rampin-3/+0
2015-08-15std: Add issues to all unstable featuresAlex Crichton-16/+32
2015-08-12Remove all unstable deprecated functionalityAlex Crichton-149/+2
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-11rollup merge of #27679: durka/patch-5Alex Crichton-4/+4
I'm not 100% sure lines 63 and 73 are typos.
2015-08-11correct copy/paste typos in stdio.rs commentsAlex Burka-4/+4
I'm not 100% sure lines 63 and 73 are typos.
2015-08-11Register new snapshotsAlex Crichton-9/+0
* Lots of core prelude imports removed * Makefile support for MSVC env vars and Rust crates removed * Makefile support for morestack removed
2015-08-10Auto merge of #27531 - bluss:io-copy-dst, r=alexcrichtonbors-2/+14
std: Allow ?Sized parameters in std::io::copy
2015-08-10std: Allow ?Sized parameters in std::io::copyUlrik Sverdrup-2/+14
std::io::copy did not allow passing trait objects directly (only with an extra &mut wrapping).
2015-08-03syntax: Implement #![no_core]Alex Crichton-2/+5
This commit is an implementation of [RFC 1184][rfc] which tweaks the behavior of the `#![no_std]` attribute and adds a new `#![no_core]` attribute. The `#![no_std]` attribute now injects `extern crate core` at the top of the crate as well as the libcore prelude into all modules (in the same manner as the standard library's prelude). The `#![no_core]` attribute disables both std and core injection. [rfc]: https://github.com/rust-lang/rfcs/pull/1184
2015-08-02Docs: clarify return value of std::io::Seek::seekSimon Sapin-2/+3
2015-07-31Auto merge of #27370 - alexcrichton:stabilize-easy, r=brsonbors-9/+6
The following APIs were all marked with a `#[stable]` tag: * process::Child::id * error::Error::is * error::Error::downcast * error::Error::downcast_ref * error::Error::downcast_mut * io::Error::get_ref * io::Error::get_mut * io::Error::into_inner * hash::Hash::hash_slice * hash::Hasher::write_{i,u}{8,16,32,64,size}
2015-07-31Auto merge of #26897 - RalfJung:stdin-mut, r=alexcrichtonbors-1/+1
This fixes #26890. To be honest, the local compile-test is still running. This just takes so long. But this looks trivial enough...
2015-07-29Rollup merge of #27345 - killercup:patch-15, r=alexcrichtonSteve Klabnik-4/+2
The first paragraph of the docs of the Cursor struct ([src](https://github.com/rust-lang/rust/blob/ff6c6ce917bd6af9c5d9315708ae6be3ba0b7e91/src/libstd/io/cursor.rs#L18-L21)) contains a Markdown link. In listings (like <http://doc.rust-lang.org/nightly/std/io/>), this won't get rendered: ![std__io_-_rust](https://cloud.githubusercontent.com/assets/20063/8925843/5c5281a8-350b-11e5-8c63-09a369d746b0.png) The hotfix would be to change the link by reference: ```rust /// A `Cursor` wraps another type and provides it with a [`Seek`][seek] /// implementation. /// /// [seek]: trait.Seek.html ``` to a direct link: ```rust /// A `Cursor` wraps another type and provides it with a /// [`Seek`](trait.Seek.html) implementation. ``` _I have not tested this as I don't have access to a machine for compiling Rust right now._ (This seems to be a more general issue, but I think I have seen this mentioned before. This PR is just to hotfix on particular occurrence. Rustdoc seems to only read the first paragraph of a doc string for the description in index pages, and _after that_ convert Markdown to HTML.) r? @steveklabnik
2015-07-29Rollup merge of #27342 - steveklabnik:fix_links, r=alexcrichtonSteve Klabnik-2/+2
How embarassing :sob: r? @alexcrichton
2015-07-29Rollup merge of #27341 - steveklabnik:remove_warning, r=alexcrichtonSteve Klabnik-4/+0
This isn't a standard header, and the other docs don't use it, so let's remove it.
2015-07-29Rollup merge of #27327 - steveklabnik:fix_take, r=alexcrichtonSteve Klabnik-1/+1
This only reads five bytes, so don't use a ten byte buffer, that's confusing. r? @alexcrichton
2015-07-28std: Stabilize a number of small APIsAlex Crichton-9/+6
The following APIs were all marked with a `#[stable]` tag: * process::Child::id * error::Error::is * error::Error::downcast * error::Error::downcast_ref * error::Error::downcast_mut * io::Error::get_ref * io::Error::get_mut * io::Error::into_inner * hash::Hash::hash_slice * hash::Hasher::write_{i,u}{8,16,32,64,size}
2015-07-28IO Docs: Fix Link in Cursor descriptionPascal Hertleif-4/+2
The first paragraph of the docs of the Cursor struct contains a Markdown link. In listings, this won't get rendered. (Rustdoc seems to split off the first paragraph and after that convert Markdown to HTML.)
2015-07-27fix two linksSteve Klabnik-2/+2
How embarassing :sob:
2015-07-27Remove warning header for consistencySteve Klabnik-4/+0
This isn't a standard header, and the other docs don't use it, so let's remove it.
2015-07-27std: Deprecate a number of unstable featuresAlex Crichton-2/+2
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-27Fix buffer length in std::io::takeSteve Klabnik-1/+1
This only reads five bytes, so don't use a ten byte buffer, that's confusing.
2015-07-22Rollup merge of #27170 - steveklabnik:doc_std_io_intoinnererror, r=alexcrichtonSteve Klabnik-1/+73
Mostly adding examples. r? @alexcrichton
2015-07-22Rollup merge of #27167 - steveklabnik:doc_std_io_take, r=alexcrichtonSteve Klabnik-2/+8
Better and more consistent links to their creators.
2015-07-22Rollup merge of #27166 - steveklabnik:doc_std_io_linewriter, r=alexcrichtonSteve Klabnik-3/+120
Beef up the struct docs, add examples for the methods. r? @alexcrichton
2015-07-22Rollup merge of #27164 - steveklabnik:doc_io_utils, r=alexcrichtonSteve Klabnik-1/+16
These provide various special readers, so point their docs to their constructor functions in a manner consistent with everything else. r? @alexcrichton
2015-07-22Rollup merge of #27163 - steveklabnik:doc_std_io_cursor, r=alexcrichtonSteve Klabnik-9/+140
Beef up the docs on the type, as well as adding examples for all methods. r? @alexcrichton
2015-07-22Rollup merge of #27157 - steveklabnik:doc_std_io_iterators, r=alexcrichtonSteve Klabnik-11/+28
Make them all consistent and link up the documentation. r? @alexcrichton
2015-07-22Rollup merge of #27155 - steveklabnik:doc_std_io_buf_writer, r=alexcrichtonSteve Klabnik-5/+97
Mostly through adding examples. r? @alexcrichton I'm going to be doing a bunch of these today, but I figured I'd keep it one PR per struct, since the last 'all the things in one PR' ended up taking a week to actually land.
2015-07-22Improve documentation for std::io::CursorSteve Klabnik-9/+140
Beef up the docs on the type, as well as adding examples for all methods.
2015-07-22Improve documentation for std::io::LineWriterSteve Klabnik-3/+120
Beef up the struct docs, add examples for the methods.
2015-07-22Improve documentation for std::io::BufWriterSteve Klabnik-5/+97
Mostly through adding examples.
2015-07-21Expand documentation for IntoInnerErrorSteve Klabnik-1/+73
Mostly adding examples.
2015-07-20Write better docs for std::ioSteve Klabnik-0/+229
This is the landing page for all of io, so we should have more than just a sentence here.
2015-07-20Update docs for take and broadcastSteve Klabnik-2/+8
Better and more consistent links to their creators.
2015-07-20Document structures in std::io::utilsSteve Klabnik-1/+16
These provide various special readers, so point their docs to their constructor functions in a manner consistent with everything else.
2015-07-20Document iterators in std::ioSteve Klabnik-11/+28
Make them all consistent and link up the documentation.
2015-07-16Merge branch 'doc_io_traits_enums' of https://github.com/steveklabnik/rust ↵Steve Klabnik-58/+601
into rollup_central
2015-07-16More docs for std::io free functions.Steve Klabnik-10/+10
2015-07-16More docs for std::io::WriteSteve Klabnik-12/+114