diff options
| author | bors <bors@rust-lang.org> | 2015-03-16 19:35:42 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-03-16 19:35:42 +0000 |
| commit | 1760e8749a46d8b64f8411a08a79d90e2b5f966e (patch) | |
| tree | 10390bd9607a368e5809af93f42fb562ed7de2b2 /src/libstd | |
| parent | bde09eea35113f25d4e0bcc4a8344de971f3069a (diff) | |
| parent | 90f06ae33fdf34e60c29cbd38dd3ec7be6b3badb (diff) | |
| download | rust-1760e8749a46d8b64f8411a08a79d90e2b5f966e.tar.gz rust-1760e8749a46d8b64f8411a08a79d90e2b5f966e.zip | |
Auto merge of #23342 - apasel422:23327, r=alexcrichton
closes #23327
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/collections/hash/map.rs | 5 | ||||
| -rw-r--r-- | src/libstd/collections/hash/set.rs | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/libstd/collections/hash/map.rs b/src/libstd/collections/hash/map.rs index 18f86901b8f..0892365d9d5 100644 --- a/src/libstd/collections/hash/map.rs +++ b/src/libstd/collections/hash/map.rs @@ -217,6 +217,11 @@ fn test_resize_policy() { /// It is required that the keys implement the `Eq` and `Hash` traits, although /// this can frequently be achieved by using `#[derive(Eq, Hash)]`. /// +/// It is a logic error for a key to be modified in such a way that the key's +/// hash, as determined by the `Hash` trait, or its equality, as determined by +/// the `Eq` trait, changes while it is in the map. This is normally only +/// possible through `Cell`, `RefCell`, global state, I/O, or unsafe code. +/// /// Relevant papers/articles: /// /// 1. Pedro Celis. ["Robin Hood Hashing"](https://cs.uwaterloo.ca/research/tr/1986/CS-86-14.pdf) diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index 35115ad77fe..de3f080de82 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -38,6 +38,12 @@ use super::state::HashState; /// HashMap where the value is (). As with the `HashMap` type, a `HashSet` /// requires that the elements implement the `Eq` and `Hash` traits. /// +/// It is a logic error for an item to be modified in such a way that the +/// item's hash, as determined by the `Hash` trait, or its equality, as +/// determined by the `Eq` trait, changes while it is in the set. This is +/// normally only possible through `Cell`, `RefCell`, global state, I/O, or +/// unsafe code. +/// /// # Examples /// /// ``` |
