358 Commits

Author SHA1 Message Date
Tobias Bucher
88427605bb Make AdditiveIterator and MultiplicativeIterator extensible
Previously it could not be implemented for types outside `libcore/iter.rs` due
to coherence issues.
2015-04-06 15:26:10 +02:00
bors
b8a02736be Auto merge of #24045 - frewsxcv:cleanup, r=alexcrichton 2015-04-04 18:35:39 +00:00
Corey Farwell
263fdfeea8 Cleanup and modernize some things in libcore::iter 2015-04-03 21:38:51 -07:00
Corey Farwell
b406782e29 Indicate associated type in comment is code-like 2015-04-02 22:47:50 -07:00
Corey Farwell
4b6248a806 Simplify match branches in iter.rs example 2015-04-01 10:44:52 -04:00
Alex Crichton
72f59732d7 Test fixes and rebase conflicts, round 3 2015-03-31 17:39:24 -07:00
Alex Crichton
85e997adff rollup merge of #23899: steveklabnik/gh23851
Conflicts:
	src/libcore/iter.rs
2015-03-31 16:18:27 -07:00
Alex Crichton
3422be3666 rollup merge of #23288: alexcrichton/issue-19470
This is a deprecated attribute that is slated for removal, and it also affects
all implementors of the trait. This commit removes the attribute and fixes up
implementors accordingly. The primary implementation which was lost was the
ability to compare `&[T]` and `Vec<T>` (in that order).

This change also modifies the `assert_eq!` macro to not consider both directions
of equality, only the one given in the left/right forms to the macro. This
modification is motivated due to the fact that `&[T] == Vec<T>` no longer
compiles, causing hundreds of errors in unit tests in the standard library (and
likely throughout the community as well).

Closes #19470
[breaking-change]
2015-03-31 15:59:35 -07:00
Alex Crichton
30283d45bb rollup merge of #23908: aturon/stab-more-stragglers
* The `io::Seek` trait.
* 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.

r? @alexcrichton
2015-03-31 15:58:58 -07:00
Alex Crichton
30532884f8 Test fixes and rebase conflicts, round 2 2015-03-31 15:56:33 -07:00
Alex Crichton
554946c81e rollup merge of #23873: alexcrichton/remove-deprecated
Conflicts:
	src/libcollectionstest/fmt.rs
	src/libcollectionstest/lib.rs
	src/libcollectionstest/str.rs
	src/libcore/error.rs
	src/libstd/fs.rs
	src/libstd/io/cursor.rs
	src/libstd/os.rs
	src/libstd/process.rs
	src/libtest/lib.rs
	src/test/run-pass-fulldeps/compiler-calls.rs
2015-03-31 15:54:44 -07:00
Alex Crichton
d4a2c94180 std: Clean out #[deprecated] APIs
This commit cleans out a large amount of deprecated APIs from the standard
library and some of the facade crates as well, updating all users in the
compiler and in tests as it goes along.
2015-03-31 15:49:57 -07:00
Alex Crichton
6d2c640cf0 rollup merge of #23886: demelev/remove_as_slice_usage 2015-03-31 15:49:11 -07:00
Alex Crichton
f6bd6b4f3d rollup merge of #23878: Ryman/stable_extremes
`min`-like functions now return the leftmost element/input for equal elements.
`max`-like return the rightmost.

Closes #23687.

cc @HeroesGrave, @aturon, @alexcrichton
2015-03-31 15:49:11 -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
Alex Crichton
5cf126ae2f std: Remove #[old_orphan_check] from PartialEq
This is a deprecated attribute that is slated for removal, and it also affects
all implementors of the trait. This commit removes the attribute and fixes up
implementors accordingly. The primary implementation which was lost was the
ability to compare `&[T]` and `Vec<T>` (in that order).

This change also modifies the `assert_eq!` macro to not consider both directions
of equality, only the one given in the left/right forms to the macro. This
modification is motivated due to the fact that `&[T] == Vec<T>` no longer
compiles, causing hundreds of errors in unit tests in the standard library (and
likely throughout the community as well).

cc #19470
[breaking-change]
2015-03-31 13:39:14 -07:00
Steve Klabnik
cf5616242a Fix up iterator documentation with regards to for loop sugar
Fixes #23851
2015-03-31 14:55:25 -04:00
Aaron Turon
232424d995 Stabilize std::num
This commit stabilizes the `std::num` module:

* The `Int` and `Float` traits are deprecated in favor of (1) the
  newly-added inherent methods and (2) the generic traits available in
  rust-lang/num.

* The `Zero` and `One` traits are reintroduced in `std::num`, which
  together with various other traits allow you to recover the most
  common forms of generic programming.

* The `FromStrRadix` trait, and associated free function, is deprecated
  in favor of inherent implementations.

* A wide range of methods and constants for both integers and floating
  point numbers are now `#[stable]`, having been adjusted for integer
  guidelines.

* `is_positive` and `is_negative` are renamed to `is_sign_positive` and
  `is_sign_negative`, in order to address #22985

* The `Wrapping` type is moved to `std::num` and stabilized;
  `WrappingOps` is deprecated in favor of inherent methods on the
  integer types, and direct implementation of operations on
  `Wrapping<X>` for each concrete integer type `X`.

Closes #22985
Closes #21069

[breaking-change]
2015-03-31 07:50:25 -07:00
Kevin Butler
2a89d695f4 libcore: Ensure min and max functions are consistent for equal inputs 2015-03-30 23:48:26 +01:00
Emeliov Dmitrii
df65f59fe9 replace deprecated as_slice() 2015-03-31 01:03:13 +03:00
Corey Farwell
8fe7f1fa97 Add an example for FromIterator::from_iter 2015-03-29 10:32:53 -04: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
Steve Klabnik
59d417a64a Note that zip and enumerate are similar
Fixes #22716
2015-03-27 18:32:46 -04:00
Brian Anderson
e9019101a8 Add #![feature] attributes to doctests 2015-03-23 14:40:26 -07:00
Alex Crichton
7c333e99bf std: Stabilize IteratorExt::cloned
This commit stabilizes the `cloned` iterator after tweaking the signature to
require that the iterator is over `&T` instead of `U: Deref<T>`. This method has
had time to bake for awhile now and it's not clear whether the `Deref` bound is
worth it. Additionally, there aren't clear conventions on when to bound and/or
implement the `Deref` trait, so for now the conservative route is to require
references instead of `U: Deref<T>`.

To change this signature to using `Deref` would technically be a
backwards-incompatible change, but it is doubtful that any code will actually
break in practice.
2015-03-17 18:05:58 -07:00
Aaron Turon
1d5983aded Deprecate range, range_step, count, distributions
This commit deprecates the `count`, `range` and `range_step` functions
in `iter`, in favor of range notation. To recover all existing
functionality, a new `step_by` adapter is provided directly on `ops::Range`
and `ops::RangeFrom`.

[breaking-change]
2015-03-13 14:45:13 -07:00
Manish Goregaokar
7a9ef60e60 Rollup merge of #23247 - tbu-:pr_core_iter_rm_isize, r=huonw 2015-03-12 09:14:08 +05:30
Steve Klabnik
64ab111b53 Example -> Examples
This brings comments in line with https://github.com/rust-lang/rfcs/blob/master/text/0505-api-comment-conventions.md#using-markdown
2015-03-11 21:11:40 -04:00
Tobias Bucher
fcae449b39 Purge isize from core::iter 2015-03-10 11:36:11 +01:00
Łukasz Niemier
3ad1c83540 Add description of fold function arguments. 2015-03-08 08:38:27 -04:00
Manish Goregaokar
417639885c Rollup merge of #23025 - huonw:better-iter-infer, r=Gankro
This concretely improves type inference of some cases (see included
test). I assume the compiler struggles to reason about multiple layers
of generic type parameters (even with associated-type equalities) but
*can* understand pure associated types, since they are always directly
computable from the input types.

Thanks to @shepmaster for noticing the issue with `Cloned` (I took that example as a test case).
2015-03-06 22:22:31 +05:30
Huon Wilson
7bcf7fb500 Use more associated types in core::iter.
This concretely improves type inference of some cases (see included
test). I assume the compiler struggles to reason about multiple layers
of generic type parameters (even with associated-type equalities) but
*can* understand pure associated types, since they are always directly
computable from the input types.
2015-03-05 22:50:09 +11:00
Eduard Burtescu
e64670888a Remove integer suffixes where the types in compiled code are identical. 2015-03-05 12:38:33 +05:30
bors
6e055c3f00 Auto merge of #22958 - laijs:option_map_for_iter_map, r=alexcrichton
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
2015-03-04 09:46:29 +00:00
bors
14f0942a49 Auto merge of #22532 - pnkfelix:arith-overflow, r=pnkfelix,eddyb
Rebase and follow-through on work done by @cmr and @aatch.

Implements most of rust-lang/rfcs#560. Errors encountered from the checks during building were fixed.

The checks for division, remainder and bit-shifting have not been implemented yet.

See also PR #20795

cc @Aatch ; cc @nikomatsakis
2015-03-03 14:18:03 +00:00
Manish Goregaokar
d8a91b95d1 Rollup merge of #22952 - huonw:missing-stable, r=alexcrichton
Unstable is the conservative choice.

cc #22950.
2015-03-03 17:02:22 +05:30
Felix S. Klock II
f0404c39f2 core::iter: fix bug uncovered by arith-overflow.
(The bug was in `impl RandomAccessIterator for Rev`; it may or may not
have been innocuous, depending on what guarantees one has about the
behavior of `idx` for the underlying iterator.)
2015-03-03 12:10:57 +01:00
Felix S. Klock II
eadc8a7b45 fix Iter::rposition for new arith-overflow checking. 2015-03-03 12:10:19 +01:00
Brian Anderson
76e9fa63ba core: Audit num module for int/uint
* count_ones/zeros, trailing_ones/zeros return u32, not usize
* rotate_left/right take u32, not usize
* RADIX, MANTISSA_DIGITS, DIGITS, BITS, BYTES are u32, not usize

Doesn't touch pow because there's another PR for it.

[breaking-change]
2015-03-02 16:12:46 -08:00
Lai Jiangshan
cd65156514 iter: use Option::map() in struct Iterater::map()
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
2015-03-02 17:32:16 +08:00
Huon Wilson
b0e7c58bf0 Add missing stability attributes on struct fields.
Unstable is the conservative choice.

cc #22950.
2015-03-02 18:04:11 +11:00
bors
341a9ca1e3 Auto merge of #22898 - edwardw:one-less-unsafe-impl, r=huonw
These implementations were temporary workaround. Now #22828 has been
fixed, they can be removed.
2015-03-01 04:06:03 +00:00
Edward Wang
2b8207a56d Remove two unsafe impls from iter::Peekable
These implementations were temporary workaround. Now #22828 has been
fixed, they can be removed.
2015-02-28 22:39:50 +08:00
JP-Ellis
bbd060d85a Update iter::order to be more generic.
Signed-off-by: JP-Ellis <coujellis@gmail.com>
2015-02-28 14:29:54 +11:00
Manish Goregaokar
08360892a0 Rollup merge of #22848 - tshepang:redundant-mention, r=brson 2015-02-27 22:07:04 +05:30
Manish Goregaokar
8c9fe23ff0 Rollup merge of #22833 - laijs:remove-redundant-else-branch, r=dotdash
The branch \"else { continue }\" is the last code inside a loop body,
it is just useless.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
2015-02-27 22:07:03 +05:30
Manish Goregaokar
91569a95f1 Rollup merge of #22795 - alexcrichton:issue-22617, r=huonw
Keeps the method consistent with `Iterator::any`.

Closes #22617
[breaking-change]
2015-02-27 22:07:02 +05:30
Tshepang Lekhonkhobe
6b01f7ac05 doc: the last mention of the word 'iterator' is redundant 2015-02-26 23:23:02 +02:00
Lai Jiangshan
9cdb2568ca remove the redundant else branch
The branch "else { continue }" is the last code inside a loop body,
it is just useless.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
2015-02-26 17:38:21 +08:00
Edward Wang
68490068e0 Send/Sync audit for libcollections
In the process, also replaces a raw mutable pointers with Unique to
spell out the ownership semantics.

cc #22709
2015-02-26 15:43:40 +08:00