{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":155119796,"defaultBranch":"master","name":"hashbrown","ownerLogin":"rust-lang","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-10-28T21:58:58.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5430905?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714329097.0","currentOid":""},"activityList":{"items":[{"before":"894b56ffa517efeb14990b2104271c594bc9b9ca","after":"ac00a0bbef46f02f555e235f57ce263aefa361e0","ref":"refs/heads/master","pushedAt":"2024-07-14T19:36:17.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #539 - overlookmotel:fix-comment, r=Amanieu\n\nFix comment\n\nFrom looking at code, I believe this comment was incorrect (or outdated). It seems that `T`s are stored in reverse order.","shortMessageHtmlLink":"Auto merge of #539 - overlookmotel:fix-comment, r=Amanieu"}},{"before":"894b56ffa517efeb14990b2104271c594bc9b9ca","after":"ac00a0bbef46f02f555e235f57ce263aefa361e0","ref":"refs/heads/auto","pushedAt":"2024-07-14T19:27:54.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #539 - overlookmotel:fix-comment, r=Amanieu\n\nFix comment\n\nFrom looking at code, I believe this comment was incorrect (or outdated). It seems that `T`s are stored in reverse order.","shortMessageHtmlLink":"Auto merge of #539 - overlookmotel:fix-comment, r=Amanieu"}},{"before":"8cb647fc2d5710cc5ac42d4553914ba7e4920361","after":"894b56ffa517efeb14990b2104271c594bc9b9ca","ref":"refs/heads/master","pushedAt":"2024-07-14T14:03:44.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #538 - overlookmotel:shorten, r=Amanieu\n\nShorten code\n\nCondense code a little.\n\nI don't know if little PRs like this have more downside in the noise they create for maintainers than the benefit of the changes themselves. If so, please say so! That'd be a completely legitimate response. I'm exploring hashbrown's code, and just submitting small bits where I find them.","shortMessageHtmlLink":"Auto merge of #538 - overlookmotel:shorten, r=Amanieu"}},{"before":"8cb647fc2d5710cc5ac42d4553914ba7e4920361","after":"894b56ffa517efeb14990b2104271c594bc9b9ca","ref":"refs/heads/auto","pushedAt":"2024-07-14T13:55:02.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #538 - overlookmotel:shorten, r=Amanieu\n\nShorten code\n\nCondense code a little.\n\nI don't know if little PRs like this have more downside in the noise they create for maintainers than the benefit of the changes themselves. If so, please say so! That'd be a completely legitimate response. I'm exploring hashbrown's code, and just submitting small bits where I find them.","shortMessageHtmlLink":"Auto merge of #538 - overlookmotel:shorten, r=Amanieu"}},{"before":"9f24e48e79f5b34cc45ba5eadf79c99fb08a5ce0","after":"8cb647fc2d5710cc5ac42d4553914ba7e4920361","ref":"refs/heads/master","pushedAt":"2024-07-12T13:55:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #536 - overlookmotel:fix-docs, r=Amanieu\n\nFix link to std traits in docs\n\nLink to `Hash` in docs for `HashTable` was pointing to `Hash` derive macro, rather than `Hash` trait.","shortMessageHtmlLink":"Auto merge of #536 - overlookmotel:fix-docs, r=Amanieu"}},{"before":"9f24e48e79f5b34cc45ba5eadf79c99fb08a5ce0","after":"8cb647fc2d5710cc5ac42d4553914ba7e4920361","ref":"refs/heads/auto","pushedAt":"2024-07-12T13:47:13.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #536 - overlookmotel:fix-docs, r=Amanieu\n\nFix link to std traits in docs\n\nLink to `Hash` in docs for `HashTable` was pointing to `Hash` derive macro, rather than `Hash` trait.","shortMessageHtmlLink":"Auto merge of #536 - overlookmotel:fix-docs, r=Amanieu"}},{"before":"4c824c548e85d75f95e0dfcee09c62c5203f9a75","after":"9f24e48e79f5b34cc45ba5eadf79c99fb08a5ce0","ref":"refs/heads/master","pushedAt":"2024-07-12T13:46:10.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #537 - overlookmotel:fix-docs2, r=Amanieu\n\nFix links in docs\n\nFix a couple of links in docs.","shortMessageHtmlLink":"Auto merge of #537 - overlookmotel:fix-docs2, r=Amanieu"}},{"before":"4c824c548e85d75f95e0dfcee09c62c5203f9a75","after":"9f24e48e79f5b34cc45ba5eadf79c99fb08a5ce0","ref":"refs/heads/auto","pushedAt":"2024-07-12T13:37:14.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #537 - overlookmotel:fix-docs2, r=Amanieu\n\nFix links in docs\n\nFix a couple of links in docs.","shortMessageHtmlLink":"Auto merge of #537 - overlookmotel:fix-docs2, r=Amanieu"}},{"before":"f0eece41a0e46145692adb0bc9627b01f95ec4a5","after":"4c824c548e85d75f95e0dfcee09c62c5203f9a75","ref":"refs/heads/master","pushedAt":"2024-06-19T17:48:12.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #533 - Amanieu:default-hasher, r=Amanieu\n\nReplace \"ahash\" with \"default-hasher\" in Cargo features\n\nThis allows us to change the default hasher in the future without it being a breaking change.","shortMessageHtmlLink":"Auto merge of #533 - Amanieu:default-hasher, r=Amanieu"}},{"before":"9595cbfc5d6460781116445868f1f47880995e5e","after":"4c824c548e85d75f95e0dfcee09c62c5203f9a75","ref":"refs/heads/auto","pushedAt":"2024-06-19T17:37:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #533 - Amanieu:default-hasher, r=Amanieu\n\nReplace \"ahash\" with \"default-hasher\" in Cargo features\n\nThis allows us to change the default hasher in the future without it being a breaking change.","shortMessageHtmlLink":"Auto merge of #533 - Amanieu:default-hasher, r=Amanieu"}},{"before":"f0eece41a0e46145692adb0bc9627b01f95ec4a5","after":"9595cbfc5d6460781116445868f1f47880995e5e","ref":"refs/heads/auto","pushedAt":"2024-06-19T15:01:04.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #533 - Amanieu:default-hasher, r=Amanieu\n\nReplace \"ahash\" with \"default-hasher\" in Cargo features\n\nThis allows us to change the default hasher in the future without it being a breaking change.","shortMessageHtmlLink":"Auto merge of #533 - Amanieu:default-hasher, r=Amanieu"}},{"before":"65c553ddd318e7b28cac0f8c922d64108b214ded","after":"f0eece41a0e46145692adb0bc9627b01f95ec4a5","ref":"refs/heads/master","pushedAt":"2024-06-18T13:59:24.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #529 - ToMe25:set_ops_assign, r=Amanieu\n\nImplement XxxAssign operations on HashSets\n\nThis PR primarily implements the XxxAssign operation traits for `HashSet`.\n\nMy primary motivation to do so is for convenience, but depending on the situation they can provide a significant performance improvement as well.\\*\n\nIn my tests, which may not be ideal because I don't have much benchmarking experience, the assigning operations are, with the exception of `Sub`, a minimum of 25% faster.\\*\nNote that when swapping the large and the small set around, some of these are significantly slower than the non-assigning variant.\nTherefore using them is likely only worth it performance wise, if you already know which set is larger, and the right one of the sets just so happens to be the one you don't need to keep.\n\n \\* Results may have changed due to #530 being merged\n\nHere my exact benchmark results, done with the newly added benchmark suit:\n\n\n\nVER | LSIZE | SSIZE | OP | NS/ITER | DIFF (%) | COMMENT\n-- | -- | -- | -- | -- | -- | --\n1 | 1000 | 100 | and | 5,682.88 |   |  \n1 | 1000 | 100 | or | 41,427.82 |   |  \n1 | 1000 | 100 | xor | 57,404.27 |   |  \n1 | 1000 | 100 | subls | 56,262.53 |   |  \n1 | 1000 | 100 | subsl | 751.42 |   |  \n1 | 1000 | 2 | and | 100.16 |   |  \n1 | 1000 | 2 | or | 40,435.09 |   |  \n1 | 1000 | 2 | xor | 59,058.05 |   |  \n1 | 1000 | 2 | subls | 58,668.34 |   |  \n1 | 1000 | 2 | subsl | 18.89 |   |  \n1 | 1000 | 100 | or_ass | 32,888.49 | -20.61% | unconditional insert\n2 | 1000 | 100 | or_ass | 29,397.04 | -29.04% | !contains insert\n3 | 1000 | 100 | or_ass | 32,399.65 | -21.79% | extend iter().cloned()\n4 | 1000 | 100 | or_ass | 30,693.33 | -25.91% | get_or_insert_owned\n5 | 1000 | 100 | or_ass | 33,722.59 | -18.60% | calc intersection; extend rhs.iter() !intersection contains; Requires S: Clone\n1 | 1000 | 100 | add_ass | 30,114.17 | -26.66% | !contains insert\n1 | 1000 | 100 | xor_ass | 32,309.85 | -43.72% | contains remove else insert\n2 | 1000 | 100 | xor_ass | 40,058.48 | -30.22% | extract_if rhs contains; extend !removed contains\n3 | 1000 | 100 | xor_ass | 31,801.04 | -44.60% | raw_entry().from_key() replace_entry_with / insert\n4 | 1000 | 100 | xor_ass | 31,935.07 | -44.37% | raw_entry().from_key_hashed_nocheck() replace_entry_with / insert_hashed_nocheck\n5 | 1000 | 100 | xor_ass | 31,843.33 | -44.53% | self.map.table.get.is_none self.map.table.insert else self.map.table.remove_entry\n1 | 1000 | 100 | subls_ass | 33,366.13 | -40.70% | contains remove\n1 | 1000 | 100 | subsl_ass | 10,686.02 | 1322.11% | contains remove\n2 | 1000 | 100 | subls_ass | 36,351.69 | -35.39% | retain !contains\n2 | 1000 | 100 | subsl_ass | 3,939.67 | 424.30% | retain !contains\n3 | 1000 | 100 | subls_ass | 32,012.82 | -43.10% | unconditional remove\n3 | 1000 | 100 | subsl_ass | 9,908.76 | 1218.67% | unconditional remove\n4 | 1000 | 100 | subls_ass | 36,232.13 | -35.60% | self.map.retain !contains\n4 | 1000 | 100 | subsl_ass | 3,939.35 | 424.25% | self.map.retain !contains\n5 | 1000 | 100 | subls_ass | 31,879.32 | -43.34% | if rhs smaller self unconditional remove else retain !contains\n5 | 1000 | 100 | subsl_ass | 3,946.98 | 425.27% | if rhs smaller self unconditional remove else retain !contains\n1 | 1000 | 2 | add_ass | 28,324.95 | -29.27% |  \n2 | 1000 | 2 | or_ass | 28,322.62 | -29.96% |  \n1 | 1000 | 2 | xor_ass | 29,107.31 | -50.71% |  \n3 | 1000 | 2 | xor_ass | 29,026.82 | -50.85% |  \n1 | 1000 | 2 | subls_ass | 29,310.04 | -50.04% |  \n1 | 1000 | 2 | subsl_ass | 4,212.56 | 22200.48% |  \n2 | 1000 | 2 | subls_ass | 34,074.85 | -41.92% |  \n2 | 1000 | 2 | subsl_ass | 66.43 | 251.67% |  \n3 | 1000 | 2 | subls_ass | 29,340.86 | -49.99% |  \n3 | 1000 | 2 | subsl_ass | 5,972.25 | 31515.93% |  \n5 | 1000 | 2 | subls_ass | 29,460.49 | -49.78% |  \n5 | 1000 | 2 | subsl_ass | 65.32 | 245.79% |  \n\nIn addition to the Assigning operators this PR changes a few more things:\n * It changes the allocator bound on the non-assigning set operations to `A: Allocator + Default`.\n * I also added a benchmark suit for the set operations.","shortMessageHtmlLink":"Auto merge of #529 - ToMe25:set_ops_assign, r=Amanieu"}},{"before":"65c553ddd318e7b28cac0f8c922d64108b214ded","after":"f0eece41a0e46145692adb0bc9627b01f95ec4a5","ref":"refs/heads/auto","pushedAt":"2024-06-18T13:50:43.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #529 - ToMe25:set_ops_assign, r=Amanieu\n\nImplement XxxAssign operations on HashSets\n\nThis PR primarily implements the XxxAssign operation traits for `HashSet`.\n\nMy primary motivation to do so is for convenience, but depending on the situation they can provide a significant performance improvement as well.\\*\n\nIn my tests, which may not be ideal because I don't have much benchmarking experience, the assigning operations are, with the exception of `Sub`, a minimum of 25% faster.\\*\nNote that when swapping the large and the small set around, some of these are significantly slower than the non-assigning variant.\nTherefore using them is likely only worth it performance wise, if you already know which set is larger, and the right one of the sets just so happens to be the one you don't need to keep.\n\n \\* Results may have changed due to #530 being merged\n\nHere my exact benchmark results, done with the newly added benchmark suit:\n\n\n\nVER | LSIZE | SSIZE | OP | NS/ITER | DIFF (%) | COMMENT\n-- | -- | -- | -- | -- | -- | --\n1 | 1000 | 100 | and | 5,682.88 |   |  \n1 | 1000 | 100 | or | 41,427.82 |   |  \n1 | 1000 | 100 | xor | 57,404.27 |   |  \n1 | 1000 | 100 | subls | 56,262.53 |   |  \n1 | 1000 | 100 | subsl | 751.42 |   |  \n1 | 1000 | 2 | and | 100.16 |   |  \n1 | 1000 | 2 | or | 40,435.09 |   |  \n1 | 1000 | 2 | xor | 59,058.05 |   |  \n1 | 1000 | 2 | subls | 58,668.34 |   |  \n1 | 1000 | 2 | subsl | 18.89 |   |  \n1 | 1000 | 100 | or_ass | 32,888.49 | -20.61% | unconditional insert\n2 | 1000 | 100 | or_ass | 29,397.04 | -29.04% | !contains insert\n3 | 1000 | 100 | or_ass | 32,399.65 | -21.79% | extend iter().cloned()\n4 | 1000 | 100 | or_ass | 30,693.33 | -25.91% | get_or_insert_owned\n5 | 1000 | 100 | or_ass | 33,722.59 | -18.60% | calc intersection; extend rhs.iter() !intersection contains; Requires S: Clone\n1 | 1000 | 100 | add_ass | 30,114.17 | -26.66% | !contains insert\n1 | 1000 | 100 | xor_ass | 32,309.85 | -43.72% | contains remove else insert\n2 | 1000 | 100 | xor_ass | 40,058.48 | -30.22% | extract_if rhs contains; extend !removed contains\n3 | 1000 | 100 | xor_ass | 31,801.04 | -44.60% | raw_entry().from_key() replace_entry_with / insert\n4 | 1000 | 100 | xor_ass | 31,935.07 | -44.37% | raw_entry().from_key_hashed_nocheck() replace_entry_with / insert_hashed_nocheck\n5 | 1000 | 100 | xor_ass | 31,843.33 | -44.53% | self.map.table.get.is_none self.map.table.insert else self.map.table.remove_entry\n1 | 1000 | 100 | subls_ass | 33,366.13 | -40.70% | contains remove\n1 | 1000 | 100 | subsl_ass | 10,686.02 | 1322.11% | contains remove\n2 | 1000 | 100 | subls_ass | 36,351.69 | -35.39% | retain !contains\n2 | 1000 | 100 | subsl_ass | 3,939.67 | 424.30% | retain !contains\n3 | 1000 | 100 | subls_ass | 32,012.82 | -43.10% | unconditional remove\n3 | 1000 | 100 | subsl_ass | 9,908.76 | 1218.67% | unconditional remove\n4 | 1000 | 100 | subls_ass | 36,232.13 | -35.60% | self.map.retain !contains\n4 | 1000 | 100 | subsl_ass | 3,939.35 | 424.25% | self.map.retain !contains\n5 | 1000 | 100 | subls_ass | 31,879.32 | -43.34% | if rhs smaller self unconditional remove else retain !contains\n5 | 1000 | 100 | subsl_ass | 3,946.98 | 425.27% | if rhs smaller self unconditional remove else retain !contains\n1 | 1000 | 2 | add_ass | 28,324.95 | -29.27% |  \n2 | 1000 | 2 | or_ass | 28,322.62 | -29.96% |  \n1 | 1000 | 2 | xor_ass | 29,107.31 | -50.71% |  \n3 | 1000 | 2 | xor_ass | 29,026.82 | -50.85% |  \n1 | 1000 | 2 | subls_ass | 29,310.04 | -50.04% |  \n1 | 1000 | 2 | subsl_ass | 4,212.56 | 22200.48% |  \n2 | 1000 | 2 | subls_ass | 34,074.85 | -41.92% |  \n2 | 1000 | 2 | subsl_ass | 66.43 | 251.67% |  \n3 | 1000 | 2 | subls_ass | 29,340.86 | -49.99% |  \n3 | 1000 | 2 | subsl_ass | 5,972.25 | 31515.93% |  \n5 | 1000 | 2 | subls_ass | 29,460.49 | -49.78% |  \n5 | 1000 | 2 | subsl_ass | 65.32 | 245.79% |  \n\nIn addition to the Assigning operators this PR changes a few more things:\n * It changes the allocator bound on the non-assigning set operations to `A: Allocator + Default`.\n * I also added a benchmark suit for the set operations.","shortMessageHtmlLink":"Auto merge of #529 - ToMe25:set_ops_assign, r=Amanieu"}},{"before":"a34158ca5528a72668b8ca116c11ccda7df0b9fa","after":"65c553ddd318e7b28cac0f8c922d64108b214ded","ref":"refs/heads/master","pushedAt":"2024-06-17T13:38:15.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #530 - ToMe25:fix_set_diff_size_hint, r=Amanieu\n\nImprove Set Difference size_hint lower bound\n\nThis PR makes the Set `Difference` iterator generate a non-zero lower bound in some situations.\n\nSpecifically, it now returns a non-zero lower bound if the `difference` method is called on a larger set with a smaller set.\nThat is because in those cases the fact that sets can't really contains duplicates\\* guarantees that a minimum of `self.len() - other.len()` items will be returned by the iterator.\n\n\\* Well, they can, but that is already documented to be causing a random mess\n\nThis implementation has the disadvantage that a single `next()` call may reduce the lower bound by more than one.\nEvery size hint generated, even the first largest one, is guaranteed to be correct, but it may be confusing if one `next()` call causes the lower bound to drop by more than one.\n\nThis could be avoided by storing the minimum number of resulting elements in the iterator and subtracting one each time `next()` is called, but I don't think its worth the added complexity.","shortMessageHtmlLink":"Auto merge of #530 - ToMe25:fix_set_diff_size_hint, r=Amanieu"}},{"before":"a34158ca5528a72668b8ca116c11ccda7df0b9fa","after":"65c553ddd318e7b28cac0f8c922d64108b214ded","ref":"refs/heads/auto","pushedAt":"2024-06-17T13:29:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #530 - ToMe25:fix_set_diff_size_hint, r=Amanieu\n\nImprove Set Difference size_hint lower bound\n\nThis PR makes the Set `Difference` iterator generate a non-zero lower bound in some situations.\n\nSpecifically, it now returns a non-zero lower bound if the `difference` method is called on a larger set with a smaller set.\nThat is because in those cases the fact that sets can't really contains duplicates\\* guarantees that a minimum of `self.len() - other.len()` items will be returned by the iterator.\n\n\\* Well, they can, but that is already documented to be causing a random mess\n\nThis implementation has the disadvantage that a single `next()` call may reduce the lower bound by more than one.\nEvery size hint generated, even the first largest one, is guaranteed to be correct, but it may be confusing if one `next()` call causes the lower bound to drop by more than one.\n\nThis could be avoided by storing the minimum number of resulting elements in the iterator and subtracting one each time `next()` is called, but I don't think its worth the added complexity.","shortMessageHtmlLink":"Auto merge of #530 - ToMe25:fix_set_diff_size_hint, r=Amanieu"}},{"before":"e25e6bb02e4fe4d58835f525d60f86091f41d50f","after":"a34158ca5528a72668b8ca116c11ccda7df0b9fa","ref":"refs/heads/master","pushedAt":"2024-06-17T13:25:02.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #532 - stepancheg:equivalent, r=Amanieu\n\nMake equivalent default feature\n\nI think this is how it is meant to be:\n\nhttps://github.com/rust-lang/hashbrown/blob/e25e6bb02e4fe4d58835f525d60f86091f41d50f/src/lib.rs#L140-L142\n\nCC `@cuviper`","shortMessageHtmlLink":"Auto merge of #532 - stepancheg:equivalent, r=Amanieu"}},{"before":"e25e6bb02e4fe4d58835f525d60f86091f41d50f","after":"a34158ca5528a72668b8ca116c11ccda7df0b9fa","ref":"refs/heads/auto","pushedAt":"2024-06-17T13:16:12.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #532 - stepancheg:equivalent, r=Amanieu\n\nMake equivalent default feature\n\nI think this is how it is meant to be:\n\nhttps://github.com/rust-lang/hashbrown/blob/e25e6bb02e4fe4d58835f525d60f86091f41d50f/src/lib.rs#L140-L142\n\nCC `@cuviper`","shortMessageHtmlLink":"Auto merge of #532 - stepancheg:equivalent, r=Amanieu"}},{"before":"2310a958c3280628cefd5bf6eccf08d36cc09df4","after":"e25e6bb02e4fe4d58835f525d60f86091f41d50f","ref":"refs/heads/master","pushedAt":"2024-06-11T13:37:40.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #531 - ToMe25:optimize_is_disjoint, r=Amanieu\n\nOptimize Set is_disjoint\n\nBy using the `Intersection` iterator in `HashSet::is_Disjoint` its performance can be significantly improved in some cases.\nThis is because `intersection()` always uses the shorter set as its iterator.\n\nIt would also be possible to replicate this \"Iterate over the smaller set and check in the larger set\" logic in the is_disjoint method.\nHowever in my benchmarks the approach I chose is faster than that.\n\nThis change only causes a significant improvement when called on the larger of two disjoint sets.\n\nMy benchmark results:\n\nName | Before | After | Diff (%)\n-- | -- | -- | --\ndisjoint_is_disjoint_large_small | 1,147.43 | 535.25 | -53,35 %\ndisjoint_is_disjoint_small_large | 535.66 | 527.59 | -1,51 %\nsubset_is_disjoint | 9.90 | 10.44 | 5,45 %\nsuperset_is_disjoint | 9.80 | 10.43 | 6,43 %","shortMessageHtmlLink":"Auto merge of #531 - ToMe25:optimize_is_disjoint, r=Amanieu"}},{"before":"62dd52194e4148ca91aab1a0687904719e51508c","after":"e25e6bb02e4fe4d58835f525d60f86091f41d50f","ref":"refs/heads/auto","pushedAt":"2024-06-11T13:29:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #531 - ToMe25:optimize_is_disjoint, r=Amanieu\n\nOptimize Set is_disjoint\n\nBy using the `Intersection` iterator in `HashSet::is_Disjoint` its performance can be significantly improved in some cases.\nThis is because `intersection()` always uses the shorter set as its iterator.\n\nIt would also be possible to replicate this \"Iterate over the smaller set and check in the larger set\" logic in the is_disjoint method.\nHowever in my benchmarks the approach I chose is faster than that.\n\nThis change only causes a significant improvement when called on the larger of two disjoint sets.\n\nMy benchmark results:\n\nName | Before | After | Diff (%)\n-- | -- | -- | --\ndisjoint_is_disjoint_large_small | 1,147.43 | 535.25 | -53,35 %\ndisjoint_is_disjoint_small_large | 535.66 | 527.59 | -1,51 %\nsubset_is_disjoint | 9.90 | 10.44 | 5,45 %\nsuperset_is_disjoint | 9.80 | 10.43 | 6,43 %","shortMessageHtmlLink":"Auto merge of #531 - ToMe25:optimize_is_disjoint, r=Amanieu"}},{"before":"2310a958c3280628cefd5bf6eccf08d36cc09df4","after":"62dd52194e4148ca91aab1a0687904719e51508c","ref":"refs/heads/auto","pushedAt":"2024-06-10T16:47:04.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #531 - ToMe25:optimize_is_disjoint, r=Amanieu\n\nOptimize Set is_disjoint\n\nBy using the `Intersection` iterator in `HashSet::is_Disjoint` its performance can be significantly improved in some cases.\nThis is because `intersection()` always uses the shorter set as its iterator.\n\nIt would also be possible to replicate this \"Iterate over the smaller set and check in the larger set\" logic in the is_disjoint method.\nHowever in my benchmarks the approach I chose is faster than that.\n\nThis change only causes a significant improvement when called on the larger of two disjoint sets.\n\nMy benchmark results:\n\nName | Before | After | Diff (%)\n-- | -- | -- | --\ndisjoint_is_disjoint_large_small | 1,147.43 | 535.25 | -53,35 %\ndisjoint_is_disjoint_small_large | 535.66 | 527.59 | -1,51 %\nsubset_is_disjoint | 9.90 | 10.44 | 5,45 %\nsuperset_is_disjoint | 9.80 | 10.43 | 6,43 %","shortMessageHtmlLink":"Auto merge of #531 - ToMe25:optimize_is_disjoint, r=Amanieu"}},{"before":"f540cb70fe8921a92bc9a8c7329063ca70989d85","after":"2310a958c3280628cefd5bf6eccf08d36cc09df4","ref":"refs/heads/master","pushedAt":"2024-06-07T11:42:53.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #525 - dzmitry-lahoda-forks:dz/1, r=Amanieu\n\nfeat: borsh serde","shortMessageHtmlLink":"Auto merge of #525 - dzmitry-lahoda-forks:dz/1, r=Amanieu"}},{"before":"f540cb70fe8921a92bc9a8c7329063ca70989d85","after":"2310a958c3280628cefd5bf6eccf08d36cc09df4","ref":"refs/heads/auto","pushedAt":"2024-06-07T11:34:38.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #525 - dzmitry-lahoda-forks:dz/1, r=Amanieu\n\nfeat: borsh serde","shortMessageHtmlLink":"Auto merge of #525 - dzmitry-lahoda-forks:dz/1, r=Amanieu"}},{"before":"835936584e33480f6afbf1ae9be7151c1b27d595","after":"f540cb70fe8921a92bc9a8c7329063ca70989d85","ref":"refs/heads/master","pushedAt":"2024-05-30T14:21:21.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #528 - ToMe25:clippy_fixes, r=Amanieu\n\nFix clippy multiple_bound_location warnings\n\nThis PR moves the `?Sized` generics bound used in the map and set source files from the generics predicate to the where clause, if a where clause already exists.\n\nAccording to what I could find online that `?Sized` bound had to be there until rustc 1.15, but since `?Sized` is already specified in where clauses in these files I don't think thats an issue.\n\nI always put the `?Sized` bound last, because that is where it already appears in the docs, but if `?Sized` first is preferred, I'll change that.\n\nThis PR also changes the `Debug` impls for *EntryRef to use a where clause, because they currently have a linebreak in \"impl X for Y\" line.\nIf this last change isn't wanted or considered something separate, please let me know :)","shortMessageHtmlLink":"Auto merge of #528 - ToMe25:clippy_fixes, r=Amanieu"}},{"before":"835936584e33480f6afbf1ae9be7151c1b27d595","after":"f540cb70fe8921a92bc9a8c7329063ca70989d85","ref":"refs/heads/auto","pushedAt":"2024-05-30T14:13:00.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #528 - ToMe25:clippy_fixes, r=Amanieu\n\nFix clippy multiple_bound_location warnings\n\nThis PR moves the `?Sized` generics bound used in the map and set source files from the generics predicate to the where clause, if a where clause already exists.\n\nAccording to what I could find online that `?Sized` bound had to be there until rustc 1.15, but since `?Sized` is already specified in where clauses in these files I don't think thats an issue.\n\nI always put the `?Sized` bound last, because that is where it already appears in the docs, but if `?Sized` first is preferred, I'll change that.\n\nThis PR also changes the `Debug` impls for *EntryRef to use a where clause, because they currently have a linebreak in \"impl X for Y\" line.\nIf this last change isn't wanted or considered something separate, please let me know :)","shortMessageHtmlLink":"Auto merge of #528 - ToMe25:clippy_fixes, r=Amanieu"}},{"before":"250040a5a1941be481ec6e1f88753d9db73e8653","after":"835936584e33480f6afbf1ae9be7151c1b27d595","ref":"refs/heads/master","pushedAt":"2024-04-28T13:16:02.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #522 - Amanieu:release-0.14.5-again, r=Amanieu\n\nRelease 0.14.5 again\n\nThis time properly bumping the version number in Cargo.toml.","shortMessageHtmlLink":"Auto merge of #522 - Amanieu:release-0.14.5-again, r=Amanieu"}},{"before":"250040a5a1941be481ec6e1f88753d9db73e8653","after":"835936584e33480f6afbf1ae9be7151c1b27d595","ref":"refs/heads/auto","pushedAt":"2024-04-28T13:07:54.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #522 - Amanieu:release-0.14.5-again, r=Amanieu\n\nRelease 0.14.5 again\n\nThis time properly bumping the version number in Cargo.toml.","shortMessageHtmlLink":"Auto merge of #522 - Amanieu:release-0.14.5-again, r=Amanieu"}},{"before":"47ef09fa217cffa672035e26e9bcb01b26ca8c28","after":null,"ref":"refs/tags/v0.14.5","pushedAt":"2024-04-28T13:05:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Amanieu","name":"Amanieu d'Antras","path":"/Amanieu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/278509?s=80&v=4"}},{"before":"97c21406c6bc5945d000373f324f7ae5cd25b60f","after":"250040a5a1941be481ec6e1f88753d9db73e8653","ref":"refs/heads/master","pushedAt":"2024-04-28T12:49:00.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #521 - Amanieu:release-0.14.5, r=Amanieu\n\nRelease 0.14.5\n\nThis temporarily reverts (#495) since that is a breaking change that will be included in v0.15.0.","shortMessageHtmlLink":"Auto merge of #521 - Amanieu:release-0.14.5, r=Amanieu"}},{"before":"97c21406c6bc5945d000373f324f7ae5cd25b60f","after":"250040a5a1941be481ec6e1f88753d9db73e8653","ref":"refs/heads/auto","pushedAt":"2024-04-28T12:40:11.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #521 - Amanieu:release-0.14.5, r=Amanieu\n\nRelease 0.14.5\n\nThis temporarily reverts (#495) since that is a breaking change that will be included in v0.15.0.","shortMessageHtmlLink":"Auto merge of #521 - Amanieu:release-0.14.5, r=Amanieu"}},{"before":"3741813402f4e2a0e606c4639e102120506b6e33","after":"97c21406c6bc5945d000373f324f7ae5cd25b60f","ref":"refs/heads/master","pushedAt":"2024-03-29T11:27:02.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"bors","name":"bors","path":"/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3372342?s=80&v=4"},"commit":{"message":"Auto merge of #516 - JohnEndson:master, r=Amanieu\n\nFix some comments","shortMessageHtmlLink":"Auto merge of #516 - JohnEndson:master, r=Amanieu"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEfyBXLQA","startCursor":null,"endCursor":null}},"title":"Activity · rust-lang/hashbrown"}