878 Commits

Author SHA1 Message Date
bors
d5b69d4670 Auto merge of #45306 - whitequark:ref_slice, r=alexcrichton
Bring back slice::ref_slice as slice::from_ref.

These functions were deprecated and removed in 1.5, but such simple
functionality shouldn't require using unsafe code, and it isn't
cluttering libstd too much.

The original removal was quite contentious (see #27774), since then
we've had precedent for including such nuggets of functionality (see rust-lang/rfcs#1789),
and @nikomatsakis has provided a lot of use cases in https://github.com/rust-lang/rfcs/pull/1789#issuecomment-314640034.
Hence this PR.

I'm not too sure what to do with stability, feel free to correct me.
It seems pointless to go through stabilization for these functions though.

cc @aturon
2017-11-02 00:06:16 +00:00
whitequark
1cc88be2eb De-stabilize core::slice::{from_ref, from_ref_mut}. 2017-11-01 22:21:29 +00:00
whitequark
8431811728 Bring back slice::ref_slice as slice::from_ref.
These functions were deprecated and removed in 1.5, but such simple
functionality shouldn't require using unsafe code, and it isn't
cluttering libstd too much.
2017-10-23 22:53:31 +00:00
steveklabnik
f8f9005e57 Fix most rendering warnings from switching to CommonMark 2017-10-20 15:29:35 -04:00
Christian Poveda
2a889eb945 added non trivial examples of closures for str::find 2017-10-17 23:51:27 -05:00
Christian Poveda
da7aab6e51 added examples of closures 2017-10-17 20:11:03 -05:00
kennytm
b290568dcd Rollup merge of #45133 - GuillaumeGomez:usize-index-msg, r=dtolnay
usize index message for vec
2017-10-13 23:37:55 +08:00
bors
0217315bf2 Auto merge of #44877 - nvzqz:box-conversions, r=alexcrichton
Improve raw Box conversions

This PR has two goals:

- Reduce use of `mem::transmute` in `Box` conversions

  I understand that `mem::transmute`-ing non `#[repr(C)]` types is implementation-defined behavior.  This may not matter within the reference implementation of Rust, but I believe it's important to remain consistent. For example, I noticed that `str::from_utf8_unchecked` went from using `mem::transmute` to using pointer casts.

- Make `Box` pointer conversions more straightforward regarding `Unique`
2017-10-10 11:07:25 +00:00
Guillaume Gomez
a28b2465d3 usize index message for vec 2017-10-09 14:45:41 +02:00
kennytm
c238df1ec3 Rollup merge of #45052 - steveklabnik:gh44105, r=dtolnay
Modify Rc/Arc language around mutability

There are a few exceptions to the rule that Arc/Rc are immutable. Rather
than dig into the details, add "generally" to hint at this difference,
as it's kind of a distraction at this point in the docs.

Additionally, Arc's docs were slightly different here generally, so add
in both the existing language and the exception.

Fixes #44105
2017-10-08 13:38:59 +08:00
Nikolai Vazquez
22298b8240 Add unique feature in Box::from_unique docs 2017-10-06 19:21:22 -04:00
Nikolai Vazquez
5af88ee996 Add missing word in Box::from_unique docs 2017-10-06 17:39:38 -04:00
Nikolai Vazquez
5ce5b2fe76 Create Box::from_unique function
Provides a reasonable interface for Box::from_raw implementation.

Does not get around the requirement of mem::transmute for converting
back and forth between Unique and Box.
2017-10-06 17:30:20 -04:00
Nikolai Vazquez
452b71a07b Revert to using mem::transmute in Box::from_raw
Same reasons as commit 904133e1e28b690e2bbd101b719509aa897539a0.
2017-10-06 17:01:50 -04:00
Nikolai Vazquez
904133e1e2 Revert to using mem::transmute in Box::into_unique
Seems to cause this error: "Cannot handle boxed::Box<[u8]> represented
as TyLayout".
2017-10-06 16:39:01 -04:00
bors
a8feaee5b6 Auto merge of #44734 - mchlrhw:wip/hashmap-entry-and-then, r=BurntSushi
Implement `and_modify` on `Entry`

## Motivation

`Entry`s are useful for allowing access to existing values in a map while also allowing default values to be inserted for absent keys. The existing API is similar to that of `Option`, where `or` and `or_with` can be used if the option variant is `None`.

The `Entry` API is, however, missing an equivalent of `Option`'s `and_then` method. If it were present it would be possible to modify an existing entry before calling `or_insert` without resorting to matching on the entry variant.

Tracking issue: https://github.com/rust-lang/rust/issues/44733.
2017-10-06 12:51:11 +00:00
mchlrhw
9e36111fc6 Implement entry_and_modify 2017-10-06 09:10:31 +01:00
steveklabnik
5e251b74eb Modify Rc/Arc language around mutability
There are a few exceptions to the rule that Arc/Rc are immutable. Rather
than dig into the details, add "generally" to hint at this difference,
as it's kind of a distraction at this point in the docs.

Additionally, Arc's docs were slightly different here generally, so add
in both the existing language and the exception.

Fixes #44105
2017-10-05 16:54:56 -04:00
bors
417c73891f Auto merge of #44943 - nivkner:fixme_fixup, r=dtolnay
address some FIXME whose associated issues were marked as closed

part of #44366
2017-10-05 19:52:00 +00:00
bors
417ffc98df Auto merge of #44890 - nvzqz:str-box-transmute, r=alexcrichton
Remove mem::transmute used in Box<str> conversions

Given that https://github.com/rust-lang/rust/pull/44877 is failing, I decided to make a separate PR. This is done with the same motivation: to avoid `mem::transmute`-ing non `#[repr(C)]` types.
2017-10-04 15:14:15 +00:00
Sean Prashad
1ebc7bba79 Resolves #36284 - vec.rs documentation 2017-10-01 12:15:05 -04:00
Niv Kaminer
ff99111f48 address some FIXMEs whose associated issues were marked as closed
remove FIXME(#13101) since `assert_receiver_is_total_eq` stays.
remove FIXME(#19649) now that stability markers render.
remove FIXME(#13642) now the benchmarks were moved.
remove FIXME(#6220) now that floating points can be formatted.
remove FIXME(#18248) and write tests for `Rc<str>` and `Rc<[u8]>`
remove reference to irelevent issues in FIXME(#1697, #2178...)
update FIXME(#5516) to point to getopts issue 7
update FIXME(#7771) to point to RFC 628
update FIXME(#19839) to point to issue 26925
2017-09-30 11:33:47 +03:00
Mark Simulacrum
570f1ce36a Rollup merge of #44824 - dtolnay:22really21, r=alexcrichton
Backport libs stabilizations to 1.21 beta

Includes the following stabilizations:

- tcpstream_connect_timeout https://github.com/rust-lang/rust/pull/44563
- iterator_for_each https://github.com/rust-lang/rust/pull/44567
- ord_max_min https://github.com/rust-lang/rust/pull/44593
- compiler_fences https://github.com/rust-lang/rust/pull/44595
- needs_drop https://github.com/rust-lang/rust/pull/44639
- vec_splice https://github.com/rust-lang/rust/pull/44640

These have been backported in https://github.com/rust-lang/rust/pull/44823.
2017-09-29 17:58:58 -06:00
Nikolai Vazquez
36d663fcfc Remove mem::transmute used in Box<str> conversions 2017-09-27 14:56:20 -04:00
bors
0e6f4cf51c Auto merge of #44709 - Badel2:inclusive-range-dotdoteq, r=petrochenkov
Initial support for `..=` syntax

#28237

This PR adds `..=` as a synonym for `...` in patterns and expressions.
Since `...` in expressions was never stable, we now issue a warning.

cc @durka
r? @aturon
2017-09-27 16:04:31 +00:00
Nikolai Vazquez
edb2c2d291 Remove uses of mem::transmute in Box methods
Makes use of conversions via Unique.
2017-09-26 21:16:59 -04:00
David Tolnay
874124b2c7
Backport libs stabilizations to 1.21 beta
This includes the following stabilizations:

- tcpstream_connect_timeout https://github.com/rust-lang/rust/pull/44563
- iterator_for_each https://github.com/rust-lang/rust/pull/44567
- ord_max_min https://github.com/rust-lang/rust/pull/44593
- compiler_fences https://github.com/rust-lang/rust/pull/44595
- needs_drop https://github.com/rust-lang/rust/pull/44639
- vec_splice https://github.com/rust-lang/rust/pull/44640
2017-09-24 22:27:39 -07:00
Steven Fackler
9733463d2b Fix capacity comparison in reserve
You can otherwise end up in a situation where you don't actually resize
but still call into handle_cap_increase which then corrupts head/tail.

Closes #44800
2017-09-23 21:19:01 -07:00
Alex Burka
e64efc91f4 Add support for ..= syntax
Add ..= to the parser

Add ..= to libproc_macro

Add ..= to ICH

Highlight ..= in rustdoc

Update impl Debug for RangeInclusive to ..=

Replace `...` to `..=` in range docs

Make the dotdoteq warning point to the ...

Add warning for ... in expressions

Updated more tests to the ..= syntax

Updated even more tests to the ..= syntax

Updated the inclusive_range entry in unstable book
2017-09-22 22:05:18 +02:00
Guillaume Gomez
b472b2829b Add missing links for Arc 2017-09-22 15:45:37 +02:00
bors
17600c1ea7 Auto merge of #44682 - bluss:iter-rfold, r=dtolnay
Add iterator method .rfold(init, function); the reverse of fold

rfold is the reverse version of fold.

Fold allows iterators to implement a different (non-resumable) internal
iteration when it is more efficient than the external iteration implemented
through the next method. (Common examples are VecDeque and .chain()).

Introduce rfold() so that the same customization is available for reverse
iteration. This is achieved by both adding the method, and by having the
Rev\<I> adaptor connect Rev::rfold → I::fold and Rev::fold → I::rfold.

On the surface, rfold(..) is just .rev().fold(..), but the special case
implementations allow a data structure specific fold to be used through for
example .iter().rev(); we thus have gains even for users never calling exactly
rfold themselves.
2017-09-21 23:44:11 +00:00
bors
94a82adbb4 Auto merge of #44355 - Xaeroxe:optimize_drain_filter, r=alexcrichton
Optimize drain_filter

This PR cuts out two copies from each iteration of `drain_filter` by exchanging the swap operation for a copy_nonoverlapping function call instead.  Since the data being swapped is not needed anymore we can just overwrite it instead.
2017-09-20 06:29:42 +00:00
Ulrik Sverdrup
84c90f3022 alloc: Implement rfold for VecDeque iterators 2017-09-18 21:56:59 +02:00
Jacob Kiesel
10384ab18a Add requested comment 2017-09-18 10:15:17 -06:00
Alex Crichton
fa9dd27168 Rollup merge of #44640 - budziq:stabilize_splice, r=dtolnay
Stabilized vec_splice and modified splice tracking issue

This stabilizes the vec_splice (Vec part of splice RFC)
Fixes #32310.
2017-09-18 11:04:23 -05:00
Tim Neumann
a0edcb4b03 Rollup merge of #44073 - murarth:rc-into-raw-unsized, r=alexcrichton
Implement `Arc`/`Rc` raw pointer conversions for `?Sized`

* Add `T: ?Sized` bound to {`Arc`,`Rc`}::{`from_raw`,`into_raw`}
2017-09-17 13:18:59 +02:00
Michal Budzynski
6b167f98d9 Updated tracking issue for String::splice and its unstable-book entry 2017-09-17 10:41:24 +02:00
Michal Budzynski
7b932d2e12 stabilized vec_splice (fixes #32310) 2017-09-17 10:32:59 +02:00
Alex Crichton
2a844b3d0d Rollup merge of #44273 - bluss:rc-downcast, r=alexcrichton
Implement <Rc<Any>>::downcast

* Implement `<Rc<Any>>::downcast::<T>`
  * New unstable method. Works just like Box\<Any\>, but for Rc.
  * Any has two cases for its methods: Any and Any + Send; Rc is never Send, so that case is skipped for Rc.
  * Motivation for being a method with self is to match Box and there is no user-supplied type; the inner type is Any and downcast does not conflict with any method of Any.
* Arc was skipped because Any itself has no downcast for the case that makes most sense: Any + Send + Sync
2017-09-16 17:09:36 -07:00
Murarth
1cbb2b3a88 Implement Arc/Rc raw pointer conversions for ?Sized
* Add `T: ?Sized` bound to {`Arc`,`Rc`}::{`from_raw`,`into_raw`}
2017-09-16 16:34:13 -07:00
Ulrik Sverdrup
3a39d95330 alloc: Add tracking issue for rc_downcast 2017-09-15 19:16:22 +02:00
Corey Farwell
68e0f28304 Rollup merge of #44572 - frewsxcv:frewsxcv-from-utf16-lossy, r=QuietMisdreavus
Clarify return type of `String::from_utf16_lossy`.

Fixes https://github.com/rust-lang/rust/issues/32874
2017-09-14 22:32:52 -04:00
Corey Farwell
19ad12af65 Rollup merge of #44559 - frewsxcv:frewsxcv-rm-loop, r=sfackler
Remove unneeded `loop`.

None
2017-09-14 22:32:49 -04:00
Corey Farwell
3e478fd512 Rollup merge of #44536 - Havvy:transmute-docs, r=steveklabnik
Fix example in transmute; add safety requirement to Vec::from_raw_parts

This fixes the second bullet point on #44281 and also removes some incorrect information.
2017-09-14 22:32:47 -04:00
Corey Farwell
a48cc80d57 Rollup merge of #44534 - adlerd:drain_filter_doctest, r=bluss
Fix drain_filter doctest.

Fixes #44499.

Also change some of the hidden logic in the doctest as a regression test; two bugs in the original would now cause test failure.
2017-09-14 22:32:46 -04:00
Corey Farwell
50240f80f1 Rollup merge of #44521 - rwakulszowa:str_utf16_doc, r=frewsxcv
Add an example of std::str::encode_utf16

Closes #44419
2017-09-14 22:32:45 -04:00
Corey Farwell
1d361ff2a5 Rollup merge of #44497 - tommyip:doc_example, r=frewsxcv
Add doc example to str::from_boxed_utf8_unchecked

Fixes #44463.
2017-09-14 22:32:44 -04:00
Corey Farwell
e3c4b8c43a Rollup merge of #44485 - 42triangles:master, r=frewsxcv
Added an example for `std::str::into_boxed_bytes()`

This solves issue #44423.
2017-09-14 22:32:43 -04:00
Corey Farwell
b4f6fba1d9 Rollup merge of #44453 - tommyip:doc_string_as_mut_str, r=frewsxcv
Add doc example to String::as_mut_str

Fixes #44429.
2017-09-14 22:32:38 -04:00
Corey Farwell
258ef37f8e Clarify return type of String::from_utf16_lossy.
Fixes https://github.com/rust-lang/rust/issues/32874
2017-09-14 15:47:37 -04:00