569 Commits

Author SHA1 Message Date
Josh Stone
df86cecdd2 Remove OccupiedEntry::remove_pair
[unstable, deprecated since 1.12.0]
2017-04-20 21:16:31 -07:00
lukaramu
89ac8654e1 Various consistency and phrasing fixes in std::collections' docs
* Changed btree_map's and hash_map's Entry (etc.) docs to be consistent
* Changed VecDeque's type and module summary sentences to be consistent
  with each other as well as with other summary sentences in the module
* Changed HashMap's and HashSet's summary sentences to be less redundantly
  phrased and also more consistant with the other summary sentences in the
  module
* Also, added an example to Bound
2017-04-13 22:51:05 +02:00
lukaramu
d688c4d806 Various fixes throughout std::collections' docs
* Added links where possible (limited because of facading)
* Changed references to methods from `foo()` to `foo` in module docs
* Changed references to methods from `HashMap::foo` to just `foo` in
  top-level docs for `HashMap` and the `default` doc for `DefaultHasher`
* Various small other fixes
2017-04-13 22:51:05 +02:00
lukaramu
d64de94efa Update std::collections' docs to use iterator (etc.) boilerplate
This greatly improves consistency.
2017-04-13 22:51:05 +02:00
arthurprs
f07ebd6097 Simplify HashMap Bucket interface
* Store capacity_mask instead of capacity
* Move bucket index into RawBucket
* Bucket index is now always within [0..table_capacity)
* Clone RawTable using RawBucket
* Simplify iterators by moving logic into RawBuckets
* Make retain aware of the number of elements
2017-04-04 22:43:27 +02:00
Josh Stone
a033f1a8ee Simplify hash table drops
This replaces the `std::collections:#️⃣:table::RevMoveBuckets`
iterator with a simpler `while` loop.  This iterator was only used for
dropping the remaining elements of a `RawTable`, so instead we can just
loop through directly and drop them in place.

This should be functionally equivalent to the former code, but a little
easier to read.  I was hoping it might have some performance benefit
too, but it seems the optimizer was already good enough to see through
the iterator -- the generated code is nearly the same.  Maybe it will
still help if an element type has more complicated drop code.
2017-03-22 10:32:38 -07:00
Corey Farwell
9e11ecb750 Rollup merge of #40621 - jswalden:dependant-spelling-fix, r=sfackler
Fix a spelling error in HashMap documentation, and slightly reword surrounding text for precision

Noticed while reading docs just now.

It's possible that the prior wording *meant* to state that the seed's randomness depends on the exact instant that the system RNG was created, I guess.  But unless there's an API guarantee that this is the case, the wording seems over-precise.  Is there a formal API guarantee that would forbid, say, the system RNG from generating all output using the Intel RDRAND instruction?  I don't think the quality of output in that case would depend on when the RNG was created.  Yet it seems to me like it could well be a valid source of randomness when computing the initial seed.

For that reason, tying the randomness of the seed, to the quality of the RNG's output *at the precise instant the seed is computed*, seems less confining.  That instantaneous quality level could be determined by the quality at the instant the RNG was created -- but instantaneous quality need not be low for that precise reason.
2017-03-19 10:18:21 -04:00
Jeff Walden
2976ddbb15 Fix a spelling error in HashMap documentation, and slightly reword it to be more precise. 2017-03-17 17:15:01 -07:00
Aaron Turon
a8f4a1bd98 Stabilize rc_raw feature, closes #37197 2017-03-17 13:28:53 -07:00
Charlie Fan
584c79888b Implement placement-in protocol for HashMap 2017-03-11 21:08:18 +08:00
arthurprs
3273003912 Reduce size overhead of adaptative hashmap
Exposes a boolean flag in RawTable and use it
instead of a bool field in HashMap.

Fixes: #40042
2017-03-03 23:59:46 +01:00
arthurprs
25b1488918 Simplify adaptive hashmap 2017-02-20 23:19:41 +01:00
arthurprs
3b4412aa62 Fix spelling in comments 2017-02-18 21:06:00 +01:00
arthurprs
57940d063c Resize hashmap when long probes are detected 2017-02-16 21:28:43 +01:00
Corey Farwell
35bf74b0ce Rollup merge of #39839 - king6cong:refine-doc, r=frewsxcv
make doc consistent with var name
2017-02-15 23:48:17 -05:00
bors
ea8c62919e Auto merge of #39560 - F001:retainHashMap, r=alexcrichton
std: Add retain method for HashMap and HashSet

Fix #36648

r? @bluss
2017-02-15 07:30:10 +00:00
king6cong
5156dedec8 make doc consistent with var name 2017-02-15 14:52:13 +08:00
Guillaume Gomez
747b9e590f Rollup merge of #39662 - Henning-K:patch-1, r=frewsxcv
Fixes #39661

Clarifies the potential ambiguity.
2017-02-12 19:16:29 +01:00
Jethro Beekman
ba82a76db9 Update set operations documentation
Reminding people of set terminology.
2017-02-09 14:16:16 -08:00
Henning Kowalk
8251a2d73f Fix missing article. 2017-02-09 01:18:50 +01:00
Henning Kowalk
51ef003dea Fixed #39661
Clarified potential ambiguity.
2017-02-09 00:44:36 +01:00
f001
d90a7b3b00 std: Add retain method for HashMap and HashSet
Fix #36648
2017-02-08 21:43:24 +08:00
Corey Farwell
65b24779a9 Rollup merge of #39393 - ollie27:stab_impls, r=alexcrichton
Fix a few impl stability attributes

The versions show up in rustdoc.
2017-02-05 09:14:45 -05:00
Guillaume Gomez
2a8ee8c804 Add missing urls in HashMap 2017-02-03 22:38:44 +01:00
Oliver Middleton
9128f6100c Fix a few impl stability attributes
The versions show up in rustdoc.
2017-01-29 13:31:47 +00:00
Stjepan Glavina
d5c3becf00 Change to_owned to to_string in docs
We should teach conversion from `str` to `String` using `to_string`
rather than the legacy `to_owned`.
2017-01-13 01:57:48 +01:00
Andrew Paseltiner
ca9b07bbc9
Replace uses of #[unsafe_destructor_blind_to_params] with #[may_dangle]
CC #34761
2016-12-28 17:47:10 -05:00
Corey Farwell
86fc63e62d Implement fmt::Debug for all structures in libstd.
Part of https://github.com/rust-lang/rust/issues/31869.

Also turn on the `missing_debug_implementations` lint at the crate
level.
2016-12-18 14:55:14 -08:00
Guillaume Gomez
ccbeb6d6ab Rollup merge of #38186 - frewsxcv:default, r=GuillaumeGomez
Add docs for last undocumented `Default` `impl`.

Add doc comment for `Default` `impl` on `DefaultHasher`.

Fixes https://github.com/rust-lang/rust/issues/36265.
2016-12-07 10:42:52 -08:00
Corey Farwell
3cd98685e4 Add doc comment for Default impl on DefaultHasher. 2016-12-06 14:45:04 -10:00
bors
5f128ed10f Auto merge of #38017 - arthurprs:hm-extend, r=bluss
Smarter HashMap/HashSet pre-allocation for extend/from_iter

HashMap/HashSet from_iter and extend are making totally different assumptions.

A more balanced decision may allocate half the lower hint (rounding up). For "well defined" iterators this effectively limits the worst case to two resizes (the initial reserve + one resize).

cc #36579
cc @bluss
2016-12-06 21:05:31 +00:00
arthurprs
2c5d2403d7 Smarter HashMap/HashSet extend 2016-12-06 10:14:59 +01:00
arthurprs
178e29df7d Use displacement instead of initial bucket in HashMap code 2016-11-27 21:38:46 +01:00
bors
cae6ab1c45 Auto merge of #37470 - arthurprs:sip-smaller, r=alexcrichton
Don't reuse RandomState seeds

cc #36481
2016-11-05 04:32:04 -07:00
Jonathan Turner
b333860611 Rollup merge of #37498 - sanxiyn:unused-type-alias, r=eddyb
Remove unused type aliases

Found by extending the dead code lint. The lint itself is work in progress because of false positives.

cc #37455.
2016-11-02 15:09:42 -04:00
bors
265ab659b2 Auto merge of #36595 - bluss:hashmap-usize-for-hash, r=alexcrichton
hashmap: Store hashes as usize internally

We can't use more than usize's bits of a hash to select a bucket anyway,
so we only need to store that part in the table. This should be an
improvement for the size of the data structure on 32-bit platforms.
Smaller data means better cache utilization and hopefully better
performance.

Fixes #36567
2016-10-31 21:36:39 -07:00
arthurprs
eba93c3a0f Don't reuse RandomState seeds 2016-10-31 21:12:27 +01:00
Seo Sanghyeon
07c8a25f42 Remove unused type aliases 2016-10-31 23:14:27 +09:00
Guillaume Gomez
9ec7c655e6 Add missing urls in collections module 2016-10-20 12:34:38 +02:00
Ulrik Sverdrup
0a0efcbebf std::collections: Reexport libcollections's range module
This is overdue, even if range and RangeArgument is still unstable.
The stability attributes are the same ones as the other unstable item
(Bound) here, they don't seem to matter.
2016-10-17 21:26:29 +02:00
Ulrik Sverdrup
13a1f21371 hashmap: Store hashes as usize internally
We can't use more than usize's bits of a hash to select a bucket anyway,
so we only need to store that part in the table. This should be an
improvement for the size of the data structure on 32-bit platforms.
Smaller data means better cache utilization and hopefully better
performance.
2016-10-17 15:54:09 +02:00
arthurprs
c435821d16 Cache conscious hashmap table 2016-10-12 17:07:09 +02:00
bors
b4e89728f4 Auto merge of #36753 - srinivasreddy:hash, r=nrc
run rustfmt on libstd/collections/hash folder
2016-10-06 21:53:29 -07:00
Manish Goregaokar
d25aeb0ef1 Rollup merge of #36902 - ollie27:stab_impls, r=alexcrichton
std: Correct stability attributes for some implementations

These are displayed by rustdoc so should be correct.
2016-10-04 15:24:02 +05:30
bors
7a26aeca77 Auto merge of #36815 - alexcrichton:stabilize-1.13, r=aturon
std: Stabilize and deprecate APIs for 1.13

This commit is intended to be backported to the 1.13 branch, and works with the
following APIs:

Stabilized

* `i32::checked_abs`
* `i32::wrapping_abs`
* `i32::overflowing_abs`
* `RefCell::try_borrow`
* `RefCell::try_borrow_mut`

Deprecated

* `BinaryHeap::push_pop`
* `BinaryHeap::replace`
* `SipHash13`
* `SipHash24`
* `SipHasher` - use `DefaultHasher` instead in the `std::collections::hash_map`
  module

Closes #28147
Closes #34767
Closes #35057
Closes #35070
2016-10-03 11:00:03 -07:00
Alex Crichton
10c3134da0 std: Stabilize and deprecate APIs for 1.13
This commit is intended to be backported to the 1.13 branch, and works with the
following APIs:

Stabilized

* `i32::checked_abs`
* `i32::wrapping_abs`
* `i32::overflowing_abs`
* `RefCell::try_borrow`
* `RefCell::try_borrow_mut`
* `DefaultHasher`
* `DefaultHasher::new`
* `DefaultHasher::default`

Deprecated

* `BinaryHeap::push_pop`
* `BinaryHeap::replace`
* `SipHash13`
* `SipHash24`
* `SipHasher` - use `DefaultHasher` instead in the `std::collections::hash_map`
  module

Closes #28147
Closes #34767
Closes #35057
Closes #35070
2016-10-03 10:34:34 -07:00
bors
75df685d28 Auto merge of #36766 - nnethercote:hash-span-capacity, r=bluss
Clarify HashMap's capacity handling.

HashMap has two notions of "capacity":

- "Usable capacity": the number of elements a hash map can hold without
  resizing. This is the meaning of "capacity" used in HashMap's API,
  e.g. the `with_capacity()` function.

- "Internal capacity": the number of allocated slots. Except for the
  zero case, it is always larger than the usable capacity (because some
  slots must be left empty) and is always a power of two.

HashMap's code is confusing because it does a poor job of
distinguishing these two meanings. I propose using two different terms
for these two concepts. Because "capacity" is already used in HashMap's
API to mean "usable capacity", I will use a different word for "internal
capacity". I propose "span", though I'm happy to consider other names.
2016-10-03 04:25:58 -07:00
Nicholas Nethercote
607d2973da Avoid overflow check in HashMap::reserve's fast path. 2016-10-03 14:31:30 +11:00
Oliver Middleton
06a7dcd355 std: Correct stability attributes for some implementations
These are displayed by rustdoc so should be correct.
2016-10-01 23:58:14 +01:00
bors
7660bdf70a Auto merge of #36557 - sfackler:fix-hashdos-docs, r=alexcrichton
Clean up hasher discussion on HashMap

* We never want to make guarantees about protecting against attacks.
* "True randomness" is not the right terminology to be using in this
    context.
* There is significantly more nuance to the performance of SipHash than
    "somewhat slow".

r? @steveklabnik

Follow up to discussion on #35371
2016-09-29 20:25:45 -07:00