rust/src/libstd
bors 1a44875af9 auto merge of #19176 : aturon/rust/stab-iter, r=alexcrichton
This is an initial pass at stabilizing the `iter` module. The module is
fairly large, but is also pretty polished, so most of the stabilization
leaves things as they are.

Some changes:

* Due to the new object safety rules, various traits needs to be split
  into object-safe traits and extension traits. This includes `Iterator`
  itself. While splitting up the traits adds some complexity, it will
  also increase flexbility: once we have automatic impls of `Trait` for
  trait objects over `Trait`, then things like the iterator adapters
  will all work with trait objects.

* Iterator adapters that use up the entire iterator now take it by
  value, which makes the semantics more clear and helps catch bugs. Due
  to the splitting of Iterator, this does not affect trait objects. If
  the underlying iterator is still desired for some reason, `by_ref` can
  be used. (Note: this change had no fallout in the Rust distro except
  for the useless mut lint.)

* In general, extension traits new and old are following an [in-progress
  convention](rust-lang/rfcs#445). As such, they
  are marked `unstable`.

* As usual, anything involving closures is `unstable` pending unboxed
  closures.

* A few of the more esoteric/underdeveloped iterator forms (like
  `RandomAccessIterator` and `MutableDoubleEndedIterator`, along with
  various unfolds) are left experimental for now.

* The `order` submodule is left `experimental` because it will hopefully
  be replaced by generalized comparison traits.

* "Leaf" iterators (like `Repeat` and `Counter`) are uniformly
  constructed by free fns at the module level. That's because the types
  are not otherwise of any significance (if we had `impl Trait`, you
  wouldn't want to define a type at all).

Closes #17701

Due to renamings and splitting of traits, this is a:

[breaking-change]
2014-11-26 17:42:07 +00:00
..
collections Fallout from stabilization 2014-11-25 17:41:54 -08:00
comm Merge libsync into libstd 2014-11-24 10:51:39 -08:00
io auto merge of #19176 : aturon/rust/stab-iter, r=alexcrichton 2014-11-26 17:42:07 +00:00
num Fix various deprecation warnings from char changes 2014-11-21 13:18:04 -08:00
path auto merge of #19176 : aturon/rust/stab-iter, r=alexcrichton 2014-11-26 17:42:07 +00:00
rand Fallout from stabilization 2014-11-25 17:41:54 -08:00
rt auto merge of #19176 : aturon/rust/stab-iter, r=alexcrichton 2014-11-26 17:42:07 +00:00
sync auto merge of #19255 : aturon/rust/merge-sync, r=alexcrichton,alexcrichton 2014-11-25 20:32:20 +00:00
sys auto merge of #19176 : aturon/rust/stab-iter, r=alexcrichton 2014-11-26 17:42:07 +00:00
thread_local std: Add a new top-level thread_local module 2014-11-23 23:37:16 -08:00
time Rename remaining Failures to Panic 2014-11-20 23:45:42 +05:30
ascii.rs Fallout from stabilization 2014-11-25 17:41:54 -08:00
bitflags.rs Repair various cases where values of distinct types were being operated 2014-11-05 09:15:28 -05:00
c_vec.rs Rename unwrap functions to into_inner 2014-11-23 15:26:53 -08:00
dynamic_lib.rs Fallout from stabilization 2014-11-25 17:41:54 -08:00
error.rs Switch to purely namespaced enums 2014-11-17 07:35:51 -08:00
failure.rs std: Add a new top-level thread_local module 2014-11-23 23:37:16 -08:00
fmt.rs remove deprecated stuff from std::fmt docs 2014-11-25 21:19:28 -05:00
hash.rs DSTify Hash 2014-10-31 07:25:34 -05:00
lib.rs Merge libsync into libstd 2014-11-24 10:51:39 -08:00
macros.rs std: Add a new top-level thread_local module 2014-11-23 23:37:16 -08:00
os.rs auto merge of #19176 : aturon/rust/stab-iter, r=alexcrichton 2014-11-26 17:42:07 +00:00
prelude.rs auto merge of #19176 : aturon/rust/stab-iter, r=alexcrichton 2014-11-26 17:42:07 +00:00
rtdeps.rs Fix spelling errors and capitalization. 2014-09-03 23:10:38 -04:00
task.rs Deprecate MaybeOwned[Vector] in favor of Cow 2014-11-25 11:22:23 -05:00