3790 Commits

Author SHA1 Message Date
Alex Crichton
f9ff55e4d0 rollup merge of #19827: japaric/clone-uc
closes #12677 (cc @Valloric)
cc #15294

r? @aturon / @alexcrichton

(Because of #19358 I had to move the struct bounds from the `where` clause into the parameter list)
2014-12-17 11:50:25 -08:00
bors
66c297d847 auto merge of #19800 : sfackler/rust/core-hash, r=alexcrichton
r? @alexcrichton
2014-12-17 16:43:20 +00:00
Steve Klabnik
033a79203e Document std::mem 2014-12-16 18:23:55 -05:00
Alex Crichton
df5404cfa8 std: Change escape_unicode to use new escapes
This changes the `escape_unicode` method on a `char` to use the new style of
unicode escapes in the language.

Closes #19811
Closes #19879
2014-12-16 08:09:37 -08:00
bors
41f5907fa6 auto merge of #19777 : nikomatsakis/rust/warn-on-shadowing, r=acrichto
per rfc 459
cc https://github.com/rust-lang/rust/issues/19390

One question is: should we start by warning, and only switch to hard error later? I think we discussed something like this in the meeting. 

r? @alexcrichton
2014-12-16 08:42:40 +00:00
Steven Fackler
24a8ef63ff Move hash module from collections to core 2014-12-15 22:48:54 -08:00
Alex Crichton
9021f61ef7 std: Second pass stabilization of default
This commit performs a second pass stabilization of the `std::default` module.
The module was already marked `#[stable]`, and the inheritance of `#[stable]`
was removed since this attribute was applied. This commit adds the `#[stable]`
attribute to the trait definition and one method name, along with all
implementations found in the standard distribution.
2014-12-15 20:04:52 -08:00
Alex Crichton
23bae856b7 std: Second-pass stabilization of mem
This commit takes a second pass through the `std::mem` module for stabilization.
The only remaining non-stable items in this module were `forget`, `transmute`,
`copy_lifetime`, and `copy_lifetime_mut`.

The `forget` and `transmute` intrinsics themselves were marked `#[stable]` to
propgate into the `core::mem` module so they would be marked stable.

The `copy_lifetime` functions were left `unstable`, but `Sized?` annotations
were added to the parameters to allow more general use with DSTs.

The `size_of_val`, `min_align_of_val`, and `align_of_val` functions would like
to grow `Sized?` bounds, but this is a backwards compatible change that
currently ICEs the compiler, so this change was not made at this time.

Finally, the module itself was declared `#![stable]` in this pass.
2014-12-15 19:46:44 -08:00
bors
b497f05008 auto merge of #19747 : alexcrichton/rust/slice-one-trait, r=brson
This commit collapses the various prelude traits for slices into just one trait:

* SlicePrelude/SliceAllocPrelude => SliceExt
* CloneSlicePrelude/CloneSliceAllocPrelude => CloneSliceExt
* OrdSlicePrelude/OrdSliceAllocPrelude => OrdSliceExt
* PartialEqSlicePrelude => PartialEqSliceExt
2014-12-16 01:32:33 +00:00
bors
0669a432a2 auto merge of #19448 : japaric/rust/binops-by-value, r=nikomatsakis
- The following operator traits now take their arguments by value: `Add`, `Sub`, `Mul`, `Div`, `Rem`, `BitAnd`, `BitOr`, `BitXor`, `Shl`, `Shr`. This breaks all existing implementations of these traits.

- The binary operation `a OP b` now "desugars" to `OpTrait::op_method(a, b)` and consumes both arguments.

- `String` and `Vec` addition have been changed to reuse the LHS owned value, and to avoid internal cloning. Only the following asymmetric operations are available: `String + &str` and `Vec<T> + &[T]`, which are now a short-hand for the "append" operation.

[breaking-change]

---

This passes `make check` locally. I haven't touch the unary operators in this PR, but converting them to by value should be very similar to this PR. I can work on them after this gets the thumbs up.

@nikomatsakis r? the compiler changes
@aturon r? the library changes. I think the only controversial bit is the semantic change of the `Vec`/`String` `Add` implementation.
cc #19148
2014-12-15 22:11:44 +00:00
Jorge Aparicio
556d971f83 Remove internal uses of marker::NoCopy 2014-12-15 15:33:37 -05:00
Niko Matsakis
1718cd6ee0 Remove all shadowed lifetimes. 2014-12-15 10:23:48 -05:00
Brian Anderson
e8e8677072 rollup merge of #19779: Noctune/master
The old PartialOrd impl for raw pointers would always return Some(_), so It might as well implement Ord too.
2014-12-15 06:45:35 -08:00
Brian Anderson
6c4a2bc55f rollup merge of #19710: steveklabnik/gh15449
Fixes #15499.
2014-12-15 06:44:20 -08:00
Andrew Wagner
8fcc832198 Standardize some usages of "which" in docstrings
In US english, "that" is used in restrictive clauses in place of
"which", and often affects the meaning of sentences.

In UK english and many dialects, no distinction is
made.

While Rust devs want to avoid unproductive pedanticism, it is worth at
least being uniform in documentation such as:

http://doc.rust-lang.org/std/iter/index.html

and also in cases where correct usage of US english clarifies the
sentence.
2014-12-15 10:50:42 +01:00
Jorge Aparicio
f63784f4e2 impl Copy for NoSend/NoSync 2014-12-14 22:21:43 -05:00
Alex Crichton
7741516a8b std: Collapse SlicePrelude traits
This commit collapses the various prelude traits for slices into just one trait:

* SlicePrelude/SliceAllocPrelude => SliceExt
* CloneSlicePrelude/CloneSliceAllocPrelude => CloneSliceExt
* OrdSlicePrelude/OrdSliceAllocPrelude => OrdSliceExt
* PartialEqSlicePrelude => PartialEqSliceExt
2014-12-14 19:03:56 -08:00
Alex Crichton
1fbca8824a std: Fully stabilize Option<T>
This commit takes a second pass through the `std::option` module to fully
stabilize any lingering methods inside of it.

These items were made stable as-is

* Some
* None
* as_mut
* expect
* unwrap
* unwrap_or
* unwrap_or_else
* map
* map_or
* map_or_else
* and_then
* or_else
* unwrap_or_default
* Default implementation
* FromIterator implementation
* Copy implementation

These items were made stable with modifications

* iter - now returns a struct called Iter
* iter_mut - now returns a struct called IterMut
* into_iter - now returns a struct called IntoIter, Clone is never implemented

This is a breaking change due to the modifications to the names of the iterator
types returned. Code referencing the old names should updated to referencing the
newer names instead. This is also a breaking change due to the fact that
`IntoIter` no longer implements the `Clone` trait.

These items were explicitly not stabilized

* as_slice - waiting on indexing conventions
* as_mut_slice - waiting on conventions with as_slice as well
* cloned - the API was still just recently added
* ok_or - API remains experimental
* ok_or_else - API remains experimental

[breaking-change]
2014-12-14 11:24:49 -08:00
Jorge Aparicio
2f7a5f4902 libcore: make iterator adaptors Cloneable 2014-12-14 10:47:04 -05:00
Jake Goulding
5966815abe InvariantLifetime is Copy-able
Both ContravariantLifetime and CovariantLifetime are marked as Copy,
so it makes sense for InvariantLifetime to be as well.
2014-12-14 09:49:02 -05:00
Niko Matsakis
d258d68db6 Remove proc types/expressions from the parser, compiler, and
language. Recommend `move||` instead.
2014-12-14 04:21:56 -05:00
mchaput
f053f29ff5 Fix mispelling in char.rs error message
Error message has wrong spelling ("radix is to high").
2014-12-14 00:48:09 -05:00
Jorge Aparicio
d193bf30ce libcore: fix doctests 2014-12-13 20:15:39 -05:00
Jorge Aparicio
65d3a40c07 libcore: fix move semantics fallout 2014-12-13 20:15:38 -05:00
Jorge Aparicio
c73259a269 libcore: convert binop traits to by value 2014-12-13 20:15:38 -05:00
Jorge Aparicio
17a9c2764f libcore: allow deprecated valN methods on doc tests 2014-12-13 20:04:41 -05:00
Jorge Aparicio
0c9b6ae6a8 Deprecate the TupleN traits 2014-12-13 20:04:40 -05:00
Jorge Aparicio
f56f9728e6 libcore: use unboxed closures in slice::raw free functions 2014-12-13 17:03:46 -05:00
Jorge Aparicio
c7b6eb38ff libcore: use unboxed closures in float_to_str_bytes_common 2014-12-13 17:03:46 -05:00
Jorge Aparicio
02e7389c5d libcore: use unboxed closures in the char module 2014-12-13 17:03:46 -05:00
Jorge Aparicio
1a87fc7c9f libcore: use unboxed closures in Formatter methods 2014-12-13 17:03:46 -05:00
Jorge Aparicio
0b0c3e1d96 libcore: fix fallout in doc tests 2014-12-13 17:03:46 -05:00
Jorge Aparicio
f18b255bce libcore: use unboxed closures in the finally module 2014-12-13 17:03:45 -05:00
Jorge Aparicio
e2a362f9bb libcore: use unboxed closures in SlicePrelude methods 2014-12-13 17:03:45 -05:00
Jorge Aparicio
6ae9b9e54a libcore: use unboxed closures in the fields of MutSplits 2014-12-13 17:03:45 -05:00
Jorge Aparicio
9c7046573b libcore: use unboxed closures in the fields of Splits 2014-12-13 17:03:45 -05:00
Jorge Aparicio
30ea64ea77 libcore: fix fallout in doctests 2014-12-13 17:03:45 -05:00
Jorge Aparicio
d3f5c1397c libcore: impl CharEq for FnMut(char) -> bool implementors 2014-12-13 17:03:45 -05:00
Jorge Aparicio
aa921b6162 libcore: use unboxed closures in ExactSizeIterator methods 2014-12-13 17:03:45 -05:00
Jorge Aparicio
5e9ca5b255 libcore: use unboxed closures in IteratorExt methods 2014-12-13 17:03:45 -05:00
Jorge Aparicio
216bcfd66b libcore: use unboxed closures in the fields of Unfold 2014-12-13 17:03:45 -05:00
Jorge Aparicio
7e3493e5e3 libcore: use unboxed closures in the fields of Inspect 2014-12-13 17:03:45 -05:00
Jorge Aparicio
a051ba1dff libcore: use unboxed closures in the fields of FlatMap 2014-12-13 17:03:45 -05:00
Jorge Aparicio
ba480cbf75 libcore: use unboxed closures in the fields of Scan 2014-12-13 17:03:44 -05:00
Jorge Aparicio
e2724cb1d5 libcore: use unboxed closures in the fields of TakeWhile 2014-12-13 17:03:44 -05:00
Jorge Aparicio
0cfdc99c71 libcore: use unboxed closures in the fields of SkipWhile 2014-12-13 17:03:44 -05:00
Jorge Aparicio
eede5d2bce libcore: use unboxed closures in the fields of FilterMap 2014-12-13 17:03:44 -05:00
Jorge Aparicio
801ae1333c libcore: use unboxed closures in the fields of Filter 2014-12-13 17:03:44 -05:00
Jorge Aparicio
1646d10edc libcore: use unboxed closures in the fields of Map 2014-12-13 17:03:44 -05:00
Jorge Aparicio
19524f1ed1 libcore: use unboxed closures in Result methods 2014-12-13 17:03:44 -05:00