Skip to content

Commit 4fd0cc1

Browse files
committed
Merge branch 'btreeset_intersection_benchmarks' into btreeset_intersection
2 parents 0186d90 + 09a2454 commit 4fd0cc1

File tree

179 files changed

+2113
-864
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+2113
-864
lines changed

.gitmodules

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
url = https://github.com/rust-lang-nursery/rustfmt.git
2525
[submodule "src/tools/miri"]
2626
path = src/tools/miri
27-
url = https://github.com/solson/miri.git
27+
url = https://github.com/rust-lang/miri.git
2828
[submodule "src/doc/rust-by-example"]
2929
path = src/doc/rust-by-example
3030
url = https://github.com/rust-lang/rust-by-example.git
@@ -46,4 +46,4 @@
4646
branch = rustc/8.0-2019-01-16
4747
[submodule "src/doc/embedded-book"]
4848
path = src/doc/embedded-book
49-
url = https://github.com/rust-embedded/book.git
49+
url = https://github.com/rust-embedded/book.git

Cargo.lock

Lines changed: 141 additions & 95 deletions
Large diffs are not rendered by default.

src/doc/rustc/src/command-line-arguments.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ This flag prints out various information about the compiler.
4242

4343
## `-g`: include debug information
4444

45-
A synonym for `-C debug-level=2`.
45+
A synonym for `-C debuginfo=2`, for more see [here](codegen-options/index.html#debuginfo).
4646

4747
## `-O`: optimize your code
4848

49-
A synonym for `-C opt-level=2`.
49+
A synonym for `-C opt-level=2`, for more see [here](codegen-options/index.html#opt-level).
5050

5151
## `-o`: filename of the output
5252

src/doc/rustc/src/lints/levels.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ This lint level gives you that.
9090
'forbid' is a special lint level that's stronger than 'deny'. It's the same
9191
as 'deny' in that a lint at this level will produce an error, but unlike the
9292
'deny' level, the 'forbid' level can not be overridden to be anything lower
93-
than an error.
93+
than an error. However, lint levels may still be capped with `--cap-lints`
94+
(see below) so `rustc --cap-lints warn` will make lints set to 'forbid' just
95+
warn.
9496

9597
## Configuring warning levels
9698

src/doc/rustdoc/src/documentation-tests.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,23 @@ appears to the reader as the initial idea but works with doc tests:
236236
/// ```
237237
```
238238

239+
As of version 1.34.0, one can also omit the `fn main()`, but you will have to
240+
disambiguate the error type:
241+
242+
```ignore
243+
/// ```
244+
/// use std::io;
245+
/// let mut input = String::new();
246+
/// io::stdin().read_line(&mut input)?;
247+
/// # Ok::<(), io:Error>(())
248+
/// ```
249+
```
250+
251+
This is an unfortunate consequence of the `?` operator adding an implicit
252+
conversion, so type inference fails because the type is not unique. Please note
253+
that you must write the `(())` in one sequence without intermediate whitespace
254+
so that rustdoc understands you want an implicit `Result`-returning function.
255+
239256
## Documenting macros
240257

241258
Here’s an example of documenting a macro:

src/liballoc/benches/btree/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
mod map;
2+
mod set;

src/liballoc/benches/btree/set.rs

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
use std::collections::BTreeSet;
2+
3+
use rand::{thread_rng, Rng};
4+
use test::{black_box, Bencher};
5+
6+
fn random(n1: u32, n2: u32) -> [BTreeSet<usize>; 2] {
7+
let mut rng = thread_rng();
8+
let mut set1 = BTreeSet::new();
9+
let mut set2 = BTreeSet::new();
10+
for _ in 0..n1 {
11+
let i = rng.gen::<usize>();
12+
set1.insert(i);
13+
}
14+
for _ in 0..n2 {
15+
let i = rng.gen::<usize>();
16+
set2.insert(i);
17+
}
18+
[set1, set2]
19+
}
20+
21+
fn staggered(n1: u32, n2: u32) -> [BTreeSet<u32>; 2] {
22+
let mut even = BTreeSet::new();
23+
let mut odd = BTreeSet::new();
24+
for i in 0..n1 {
25+
even.insert(i * 2);
26+
}
27+
for i in 0..n2 {
28+
odd.insert(i * 2 + 1);
29+
}
30+
[even, odd]
31+
}
32+
33+
fn neg_vs_pos(n1: u32, n2: u32) -> [BTreeSet<i32>; 2] {
34+
let mut neg = BTreeSet::new();
35+
let mut pos = BTreeSet::new();
36+
for i in -(n1 as i32)..=-1 {
37+
neg.insert(i);
38+
}
39+
for i in 1..=(n2 as i32) {
40+
pos.insert(i);
41+
}
42+
[neg, pos]
43+
}
44+
45+
fn pos_vs_neg(n1: u32, n2: u32) -> [BTreeSet<i32>; 2] {
46+
let mut neg = BTreeSet::new();
47+
let mut pos = BTreeSet::new();
48+
for i in -(n1 as i32)..=-1 {
49+
neg.insert(i);
50+
}
51+
for i in 1..=(n2 as i32) {
52+
pos.insert(i);
53+
}
54+
[pos, neg]
55+
}
56+
57+
macro_rules! set_intersection_bench {
58+
($name: ident, $sets: expr) => {
59+
#[bench]
60+
pub fn $name(b: &mut Bencher) {
61+
// setup
62+
let sets = $sets;
63+
64+
// measure
65+
b.iter(|| {
66+
let x = sets[0].intersection(&sets[1]).count();
67+
black_box(x);
68+
})
69+
}
70+
};
71+
}
72+
73+
set_intersection_bench! {intersect_random_100, random(100, 100)}
74+
set_intersection_bench! {intersect_random_10k, random(10_000, 10_000)}
75+
set_intersection_bench! {intersect_random_10_vs_10k, random(10, 10_000)}
76+
set_intersection_bench! {intersect_random_10k_vs_10, random(10_000, 10)}
77+
set_intersection_bench! {intersect_staggered_100, staggered(100, 100)}
78+
set_intersection_bench! {intersect_staggered_10k, staggered(10_000, 10_000)}
79+
set_intersection_bench! {intersect_staggered_10_vs_10k, staggered(10, 10_000)}
80+
set_intersection_bench! {intersect_staggered_10k_vs_10, staggered(10_000, 10)}
81+
set_intersection_bench! {intersect_neg_vs_pos_100, neg_vs_pos(100, 100)}
82+
set_intersection_bench! {intersect_neg_vs_pos_10k, neg_vs_pos(10_000, 10_000)}
83+
set_intersection_bench! {intersect_neg_vs_pos_10_vs_10k,neg_vs_pos(10, 10_000)}
84+
set_intersection_bench! {intersect_neg_vs_pos_10k_vs_10,neg_vs_pos(10_000, 10)}
85+
set_intersection_bench! {intersect_pos_vs_neg_100, pos_vs_neg(100, 100)}
86+
set_intersection_bench! {intersect_pos_vs_neg_10k, pos_vs_neg(10_000, 10_000)}
87+
set_intersection_bench! {intersect_pos_vs_neg_10_vs_10k,pos_vs_neg(10, 10_000)}
88+
set_intersection_bench! {intersect_pos_vs_neg_10k_vs_10,pos_vs_neg(10_000, 10)}

src/liballoc/borrow.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,8 @@ pub enum Cow<'a, B: ?Sized + 'a>
182182
}
183183

184184
#[stable(feature = "rust1", since = "1.0.0")]
185-
impl<'a, B: ?Sized + ToOwned> Clone for Cow<'a, B> {
186-
fn clone(&self) -> Cow<'a, B> {
185+
impl<B: ?Sized + ToOwned> Clone for Cow<'_, B> {
186+
fn clone(&self) -> Self {
187187
match *self {
188188
Borrowed(b) => Borrowed(b),
189189
Owned(ref o) => {
@@ -193,7 +193,7 @@ impl<'a, B: ?Sized + ToOwned> Clone for Cow<'a, B> {
193193
}
194194
}
195195

196-
fn clone_from(&mut self, source: &Cow<'a, B>) {
196+
fn clone_from(&mut self, source: &Self) {
197197
if let Owned(ref mut dest) = *self {
198198
if let Owned(ref o) = *source {
199199
o.borrow().clone_into(dest);
@@ -296,11 +296,11 @@ impl<B: ?Sized + ToOwned> Deref for Cow<'_, B> {
296296
impl<B: ?Sized> Eq for Cow<'_, B> where B: Eq + ToOwned {}
297297

298298
#[stable(feature = "rust1", since = "1.0.0")]
299-
impl<'a, B: ?Sized> Ord for Cow<'a, B>
299+
impl<B: ?Sized> Ord for Cow<'_, B>
300300
where B: Ord + ToOwned
301301
{
302302
#[inline]
303-
fn cmp(&self, other: &Cow<'a, B>) -> Ordering {
303+
fn cmp(&self, other: &Self) -> Ordering {
304304
Ord::cmp(&**self, &**other)
305305
}
306306
}
@@ -353,18 +353,18 @@ impl<B: ?Sized> fmt::Display for Cow<'_, B>
353353
}
354354

355355
#[stable(feature = "default", since = "1.11.0")]
356-
impl<'a, B: ?Sized> Default for Cow<'a, B>
356+
impl<B: ?Sized> Default for Cow<'_, B>
357357
where B: ToOwned,
358358
<B as ToOwned>::Owned: Default
359359
{
360360
/// Creates an owned Cow<'a, B> with the default value for the contained owned value.
361-
fn default() -> Cow<'a, B> {
361+
fn default() -> Self {
362362
Owned(<B as ToOwned>::Owned::default())
363363
}
364364
}
365365

366366
#[stable(feature = "rust1", since = "1.0.0")]
367-
impl<'a, B: ?Sized> Hash for Cow<'a, B>
367+
impl<B: ?Sized> Hash for Cow<'_, B>
368368
where B: Hash + ToOwned
369369
{
370370
#[inline]

src/liballoc/collections/binary_heap.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -947,8 +947,8 @@ impl<T: fmt::Debug> fmt::Debug for Iter<'_, T> {
947947

948948
// FIXME(#26925) Remove in favor of `#[derive(Clone)]`
949949
#[stable(feature = "rust1", since = "1.0.0")]
950-
impl<'a, T> Clone for Iter<'a, T> {
951-
fn clone(&self) -> Iter<'a, T> {
950+
impl<T> Clone for Iter<'_, T> {
951+
fn clone(&self) -> Self {
952952
Iter { iter: self.iter.clone() }
953953
}
954954
}

src/liballoc/collections/btree/map.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1218,8 +1218,8 @@ impl<K, V> ExactSizeIterator for Iter<'_, K, V> {
12181218
}
12191219

12201220
#[stable(feature = "rust1", since = "1.0.0")]
1221-
impl<'a, K, V> Clone for Iter<'a, K, V> {
1222-
fn clone(&self) -> Iter<'a, K, V> {
1221+
impl<K, V> Clone for Iter<'_, K, V> {
1222+
fn clone(&self) -> Self {
12231223
Iter {
12241224
range: self.range.clone(),
12251225
length: self.length,
@@ -1441,8 +1441,8 @@ impl<K, V> ExactSizeIterator for Keys<'_, K, V> {
14411441
impl<K, V> FusedIterator for Keys<'_, K, V> {}
14421442

14431443
#[stable(feature = "rust1", since = "1.0.0")]
1444-
impl<'a, K, V> Clone for Keys<'a, K, V> {
1445-
fn clone(&self) -> Keys<'a, K, V> {
1444+
impl<K, V> Clone for Keys<'_, K, V> {
1445+
fn clone(&self) -> Self {
14461446
Keys { inner: self.inner.clone() }
14471447
}
14481448
}
@@ -1478,8 +1478,8 @@ impl<K, V> ExactSizeIterator for Values<'_, K, V> {
14781478
impl<K, V> FusedIterator for Values<'_, K, V> {}
14791479

14801480
#[stable(feature = "rust1", since = "1.0.0")]
1481-
impl<'a, K, V> Clone for Values<'a, K, V> {
1482-
fn clone(&self) -> Values<'a, K, V> {
1481+
impl<K, V> Clone for Values<'_, K, V> {
1482+
fn clone(&self) -> Self {
14831483
Values { inner: self.inner.clone() }
14841484
}
14851485
}
@@ -1606,8 +1606,8 @@ impl<'a, K, V> Range<'a, K, V> {
16061606
impl<K, V> FusedIterator for Range<'_, K, V> {}
16071607

16081608
#[stable(feature = "btree_range", since = "1.17.0")]
1609-
impl<'a, K, V> Clone for Range<'a, K, V> {
1610-
fn clone(&self) -> Range<'a, K, V> {
1609+
impl<K, V> Clone for Range<'_, K, V> {
1610+
fn clone(&self) -> Self {
16111611
Range {
16121612
front: self.front,
16131613
back: self.back,

0 commit comments

Comments
 (0)