Commit Graph

1791 Commits

Author SHA1 Message Date
bors
e518c057f5 Auto merge of #27894 - steveklabnik:gh26888, r=alexcrichton
{BTree,Hash}{Map,Set} will not update their key if it already exists, which
can matter with more complex keys. This behavior is now documented.

Fixes #26888
2015-10-23 03:13:10 +00:00
Steve Klabnik
e8e3c6f386 Document replacement behavior in some collections
{BTree,Hash}{Map,Set} will not update their key if it already exists, which
can matter with more complex keys. This behavior is now documented.

Fixes #26888
2015-10-22 20:30:42 -04:00
bors
fddf2f7574 Auto merge of #29186 - pnkfelix:fsk-fix-issue-29166, r=alexcrichton
Add dropck unsafe escape hatch (UGEH) to vec::IntoIter.

Fix #29166
2015-10-21 02:39:59 +00:00
Felix S. Klock II
2b712c78cf Add dropck unsafe escape hatch (UGEH) to vec::IntoIter.
Fix #29166
2015-10-20 14:54:38 +02:00
bors
e7eb7d58f9 Auto merge of #27723 - mystor:vecdeque_drain_range, r=bluss
This is a WIP PR for my implementation of drain over the VecDeque data structure supporting ranges. It brings the VecDeque drain implementation in line with Vec's.

Tests haven't been written for the new function yet.
2015-10-20 11:55:17 +00:00
Andrew Paseltiner
9431f3cc7b Correct spelling in docs 2015-10-19 13:48:42 -04:00
Andrew Paseltiner
1162b3752c Correct spelling in docs 2015-10-13 09:44:11 -04:00
Andrew Chin
dce58baff0 Trivial typo fix: from_utrf8 should be from_utf8 2015-10-10 23:33:43 -04:00
bors
87cd2c0827 Auto merge of #28861 - pnkfelix:fsk-nonparam-dropck-issue28498, r=arielb1
implement RFC 1238: nonparametric dropck.

cc #28498 

cc @nikomatsakis
2015-10-10 00:39:29 +00:00
Cristi Cobzarenco
4b308b44e1 typos: fix a grabbag of typos all over the place 2015-10-08 19:49:31 +01:00
Michael Layzell
493355d8e9 Add unsafe Send and Sync impls to VecDeque's Drain<T> 2015-10-08 09:49:32 -04:00
Boris Egorov
836be409ee doc: Mention split_whitespace in split doc 2015-10-07 00:44:55 +06:00
Felix S. Klock II
d778e57bf6 Add RFC 1238's unsafe_destructor_blind_to_params (UGEH) where needed.
I needed it in `RawVec`, `Vec`, and `TypedArena` for `rustc` to
bootstrap; but of course that alone was not sufficient for `make
check`.

Later I added `unsafe_destructor_blind_to_params` to collections, in
particular `LinkedList` and `RawTable` (the backing representation for
`HashMap` and `HashSet`), to get the regression tests exercising
cyclic structure from PR #27185 building.

----

Note that the feature is `dropck_parametricity` (which is not the same
as the attribute's name). We will almost certainly vary our strategy
here in the future, so it makes some sense to have a not-as-ugly name
for the feature gate. (The attribute name was deliberately selected to
be ugly looking.)
2015-10-06 14:16:49 +02:00
Steve Klabnik
4d73da92f0 Improve documentation for the from_utf8 family
Our docs were very basic for the various versions of from_utf8, so
this commit beefs them up.

It also improves docs for the &str variant's error, Utf8Error.
2015-10-02 19:42:25 -04:00
Alexis Beingessner
c7527a1999 fixup wording 2015-10-01 15:54:40 -04:00
Alexis Beingessner
9ef2651dff flesh out what Vec actually guarantees 2015-10-01 15:53:01 -04:00
Steve Klabnik
d310ad9547 Format panic docs for split_at
Fixes #28384
2015-09-30 12:42:47 -04:00
bors
3e6d7243ae Auto merge of #28731 - bluss:by-ref, r=alexcrichton
Remove redundant uses of Iterator::by_ref()
2015-09-30 11:03:13 +00:00
Ulrik Sverdrup
e2aa82c413 Remove redundant uses of Iterator::by_ref() 2015-09-29 19:20:18 +02:00
Carol (Nichols || Goulding)
a33d61a401 Use code formatting for code-relevant values in std::fmt docs
Especially when documenting the use of `0`, since zero looks very
similar to `O` in fonts not meant for displaying code.

Other literal characters, traits, etc should also use code formatting.
This change makes this documentation more internally consistent.
2015-09-28 22:56:22 -04:00
bors
638b2608a7 Auto merge of #28689 - Manishearth:rollup, r=Manishearth
- Successful merges: #28664, #28673, #28681, #28682, #28688
- Failed merges:
2015-09-27 11:01:11 +00:00
Manish Goregaokar
30b43c1b12 Rollup merge of #28682 - apasel422:features, r=steveklabnik 2015-09-27 15:05:18 +05:30
Manish Goregaokar
8c47cfef5d Rollup merge of #28664 - apasel422:collections-debug, r=alexcrichton 2015-09-27 15:05:17 +05:30
bors
219eca11b0 Auto merge of #28663 - bluss:vec-as-mut, r=alexcrichton
Implement AsMut for Vec

Fixes #28549
2015-09-27 08:26:49 +00:00
bors
6f880eee79 Auto merge of #28635 - alexcrichton:str-parse-error-void, r=aturon
It can never be instantiated, so signify this by having it actually be an empty
`enum`.

cc #27734
2015-09-26 21:52:37 +00:00
bors
54f7b1d455 Auto merge of #28632 - alexcrichton:update-match-indices, r=Kimundi
This commit updates the `MatchIndices` and `RMatchIndices` iterators to follow
the same pattern as the `chars` and `char_indices` iterators. The `matches`
iterator currently yield `&str` elements, so the `MatchIndices` iterator now
yields the index of the match as well as the `&str` that matched (instead of
start/end indexes).

cc #27743
2015-09-26 20:06:51 +00:00
Andrew Paseltiner
589c82449a Remove unnecessary #![feature] attributes 2015-09-26 15:59:31 -04:00
Ulrik Sverdrup
804efdabcd Add AsMut<Vec<T>> for Vec<T> 2015-09-25 19:54:15 +02:00
Alex Crichton
d5f2d3b177 std: Update MatchIndices to return a subslice
This commit updates the `MatchIndices` and `RMatchIndices` iterators to follow
the same pattern as the `chars` and `char_indices` iterators. The `matches`
iterator currently yield `&str` elements, so the `MatchIndices` iterator now
yields the index of the match as well as the `&str` that matched (instead of
start/end indexes).

cc #27743
2015-09-25 09:29:23 -07:00
Andrew Paseltiner
db18718809 Simplify Debug for {EnumSet, VecDeque} 2015-09-25 12:03:03 -04:00
Ulrik Sverdrup
9b97264d81 Implement AsMut for Vec
Fixes #28549
2015-09-25 17:43:58 +02:00
Alex Crichton
81f0bf7667 std: Switch string::ParseError to an empty enum
It can never be instantiated, so signify this by having it actually be an empty
`enum`.

cc #27734
2015-09-24 09:40:50 -07:00
bors
355bbfb895 Auto merge of #28602 - apasel422:clone_from, r=bluss
r? @bluss
2015-09-24 14:19:20 +00:00
Andrew Paseltiner
97f2a32564 Optimize Vec::clone_from
Before:

test dst_bigger::src_100_dst_1000::clone      ... bench:  34 ns/iter (+/- 1)
test dst_bigger::src_100_dst_1000::clone_from ... bench:  75 ns/iter (+/- 3)

test dst_bigger::src_10_dst_100::clone        ... bench:  25 ns/iter (+/- 0)
test dst_bigger::src_10_dst_100::clone_from   ... bench:   9 ns/iter (+/- 1)

test eq::src_1000_dst_1000::clone             ... bench: 105 ns/iter (+/- 2)
test eq::src_1000_dst_1000::clone_from        ... bench: 593 ns/iter (+/- 21)

test eq::src_100_dst_100::clone               ... bench:  34 ns/iter (+/- 1)
test eq::src_100_dst_100::clone_from          ... bench:  75 ns/iter (+/- 1)

test src_bigger::src_1000_dst_100::clone      ... bench: 103 ns/iter (+/- 5)
test src_bigger::src_1000_dst_100::clone_from ... bench: 148 ns/iter (+/- 5)

test src_bigger::src_100_dst_10::clone        ... bench:  34 ns/iter (+/- 1)
test src_bigger::src_100_dst_10::clone_from   ... bench:  20 ns/iter (+/- 0)

After:

test dst_bigger::src_100_dst_1000::clone      ... bench:  34 ns/iter (+/- 2)
test dst_bigger::src_100_dst_1000::clone_from ... bench:  15 ns/iter (+/- 1)

test dst_bigger::src_10_dst_100::clone        ... bench:  26 ns/iter (+/- 1)
test dst_bigger::src_10_dst_100::clone_from   ... bench:   7 ns/iter (+/- 0)

test eq::src_1000_dst_1000::clone             ... bench: 103 ns/iter (+/- 1)
test eq::src_1000_dst_1000::clone_from        ... bench:  85 ns/iter (+/- 4)

test eq::src_100_dst_100::clone               ... bench:  34 ns/iter (+/- 2)
test eq::src_100_dst_100::clone_from          ... bench:  15 ns/iter (+/- 1)

test src_bigger::src_1000_dst_100::clone      ... bench: 103 ns/iter (+/- 4)
test src_bigger::src_1000_dst_100::clone_from ... bench:  90 ns/iter (+/- 2)

test src_bigger::src_100_dst_10::clone        ... bench:  34 ns/iter (+/- 2)
test src_bigger::src_100_dst_10::clone_from   ... bench:  20 ns/iter (+/- 0)

Closes #28601.
2015-09-24 08:47:33 -04:00
Remi Rampin
30fbf44fbc Fix bad copypasta for patterns doc in std::str 2015-09-23 14:35:53 -04:00
Andrew Paseltiner
e9946f99b9 Override clone_from for {BinaryHeap, String}
CC #28481
2015-09-23 10:32:58 -04:00
Michael Layzell
45be6fc4d7 Implement drain over a range for VecDeque 2015-09-22 18:56:50 -04:00
bors
e9d2587766 Auto merge of #28364 - petrochenkov:usegate, r=alexcrichton
Closes https://github.com/rust-lang/rust/issues/28075
Closes https://github.com/rust-lang/rust/issues/28388

r? @eddyb 
cc @brson
2015-09-22 01:12:26 +00:00
whitequark
77f5da77a9 Add comment. 2015-09-20 22:23:35 +03:00
whitequark
6beb4ba1aa Fix style. 2015-09-20 22:15:39 +03:00
whitequark
c5fa7776df Do not drop_in_place elements of Vec<T> if T doesn't need dropping
With -O2, LLVM's inliner can remove this code, but this does not happen
with -O1 and lower. As a result, dropping Vec<u8> was linear with length,
resulting in abysmal performance for large buffers.
2015-09-20 11:17:19 +03:00
bors
6db1a0ea7c Auto merge of #28497 - apasel422:issue-28493, r=Gankro
When both the key and value types were zero-sized, `BTreeMap` previously
called `heap::allocate` with `size == 0` for leaf nodes, which is
undefined behavior, and jemalloc would attempt to read invalid memory,
crashing the process.

This avoids undefined behavior by allocating enough space to store one
edge in leaf nodes that would otherwise have `size == 0`. Although this
uses extra memory, maps with zero-sized key types that have sensible
implementations of the ordering traits can only contain a single
key-value pair (and therefore only a single leaf node), and maps with
key and value types that are both zero-sized have few uses, if any.

Furthermore, this is a temporary fix that will likely be unnecessary
once the `BTreeMap` implementation is rewritten to use parent pointers.

Closes #28493.
2015-09-19 17:40:56 +00:00
Ulrik Sverdrup
66f5dc1347 VecDeque: Use power of two capacity even for zero sized types
VecDeque depends on using a power of two capacity. Use the largest
possible power of two capacity for ZSTs.
2015-09-19 12:50:52 +02:00
Andrew Paseltiner
9526813f5b Avoid zero-sized leaf allocations in BTreeMap
When both the key and value types were zero-sized, `BTreeMap` previously
called `heap::allocate` with `size == 0` for leaf nodes, which is
undefined behavior, and jemalloc would attempt to read invalid memory,
crashing the process.

This avoids undefined behavior by allocating enough space to store one
edge in leaf nodes that would otherwise have `size == 0`. Although this
uses extra memory, maps with zero-sized key types that have sensible
implementations of the ordering traits can only contain a single
key-value pair (and therefore only a single leaf node), and maps with
key and value types that are both zero-sized have few uses, if any.

Furthermore, this is a temporary fix that will likely be unnecessary
once the `BTreeMap` implementation is rewritten to use parent pointers.

Closes #28493.
2015-09-18 15:27:17 -04:00
Vadim Petrochenkov
50e42ea9f7 Correctly walk import lists in AST visitors 2015-09-17 14:13:12 +03:00
Alex Crichton
f0b1326dc7 std: Stabilize/deprecate features for 1.4
The FCP is coming to a close and 1.4 is coming out soon, so this brings in the
libs team decision for all library features this cycle.

Stabilized APIs:

* `<Box<str>>::into_string`
* `Arc::downgrade`
* `Arc::get_mut`
* `Arc::make_mut`
* `Arc::try_unwrap`
* `Box::from_raw`
* `Box::into_raw`
* `CStr::to_str`
* `CStr::to_string_lossy`
* `CString::from_raw`
* `CString::into_raw`
* `IntoRawFd::into_raw_fd`
* `IntoRawFd`
* `IntoRawHandle::into_raw_handle`
* `IntoRawHandle`
* `IntoRawSocket::into_raw_socket`
* `IntoRawSocket`
* `Rc::downgrade`
* `Rc::get_mut`
* `Rc::make_mut`
* `Rc::try_unwrap`
* `Result::expect`
* `String::into_boxed_slice`
* `TcpSocket::read_timeout`
* `TcpSocket::set_read_timeout`
* `TcpSocket::set_write_timeout`
* `TcpSocket::write_timeout`
* `UdpSocket::read_timeout`
* `UdpSocket::set_read_timeout`
* `UdpSocket::set_write_timeout`
* `UdpSocket::write_timeout`
* `Vec::append`
* `Vec::split_off`
* `VecDeque::append`
* `VecDeque::retain`
* `VecDeque::split_off`
* `rc::Weak::upgrade`
* `rc::Weak`
* `slice::Iter::as_slice`
* `slice::IterMut::into_slice`
* `str::CharIndices::as_str`
* `str::Chars::as_str`
* `str::split_at_mut`
* `str::split_at`
* `sync::Weak::upgrade`
* `sync::Weak`
* `thread::park_timeout`
* `thread::sleep`

Deprecated APIs

* `BTreeMap::with_b`
* `BTreeSet::with_b`
* `Option::as_mut_slice`
* `Option::as_slice`
* `Result::as_mut_slice`
* `Result::as_slice`
* `f32::from_str_radix`
* `f64::from_str_radix`

Closes #27277
Closes #27718
Closes #27736
Closes #27764
Closes #27765
Closes #27766
Closes #27767
Closes #27768
Closes #27769
Closes #27771
Closes #27773
Closes #27775
Closes #27776
Closes #27785
Closes #27792
Closes #27795
Closes #27797
2015-09-11 09:48:48 -07:00
Manish Goregaokar
5e2d8545e8 Add note about clone in docs for vec![] 2015-09-07 03:57:20 +05:30
Alex Crichton
48615a68fb std: Account for CRLF in {str, BufRead}::lines
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-03 23:01:41 -07:00
Vadim Petrochenkov
06fb196256 Use null()/null_mut() instead of 0 as *const T/0 as *mut T 2015-09-03 09:49:50 +03:00
bors
0dbbab9049 Auto merge of #28156 - nagisa:binaryheap-debug, r=Gankro
r? @Gankro
2015-09-02 06:37:32 +00:00