<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/liballoc/collections/btree, branch 1.37.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.37.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.37.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2019-05-22T21:09:34+00:00</updated>
<entry>
<title>Revert "Add implementations of last in terms of next_back on a bunch of DoubleEndedIterators."</title>
<updated>2019-05-22T21:09:34+00:00</updated>
<author>
<name>Steven Fackler</name>
<email>sfackler@palantir.com</email>
</author>
<published>2019-05-22T21:09:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8a22bc3b30e81568db25cf57aa9e7629bfa449c7'/>
<id>urn:sha1:8a22bc3b30e81568db25cf57aa9e7629bfa449c7</id>
<content type='text'>
This reverts commit 3e86cf36b5114f201868bf459934fe346a76a2d4.
</content>
</entry>
<entry>
<title>Add implementations of last in terms of next_back on a bunch of DoubleEndedIterators.</title>
<updated>2019-04-20T04:52:43+00:00</updated>
<author>
<name>Kyle Huey</name>
<email>khuey@kylehuey.com</email>
</author>
<published>2019-04-20T04:13:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3e86cf36b5114f201868bf459934fe346a76a2d4'/>
<id>urn:sha1:3e86cf36b5114f201868bf459934fe346a76a2d4</id>
<content type='text'>
r?Manishearth
</content>
</entry>
<entry>
<title>Use for_each to extend collections</title>
<updated>2019-04-05T21:51:07+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2019-04-05T21:51:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0730a01c5ca3b0e8760d72a05c47d4199bd64728'/>
<id>urn:sha1:0730a01c5ca3b0e8760d72a05c47d4199bd64728</id>
<content type='text'>
This updates the `Extend` implementations to use `for_each` for many
collections: `BinaryHeap`, `BTreeMap`, `BTreeSet`, `LinkedList`, `Path`,
`TokenStream`, `VecDeque`, and `Wtf8Buf`.

Folding with `for_each` enables better performance than a `for`-loop for
some iterators, especially if they can just forward to internal
iterators, like `Chain` and `FlatMap` do.
</content>
</entry>
<entry>
<title>improve worst-case performance of BTreeSet difference and intersection</title>
<updated>2019-03-29T11:18:20+00:00</updated>
<author>
<name>Stein Somers</name>
<email>git@steinsomers.be</email>
</author>
<published>2019-03-13T22:01:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f5fee8fd7d2bd25ac63b9ea44925f9ac2f61c3d2'/>
<id>urn:sha1:f5fee8fd7d2bd25ac63b9ea44925f9ac2f61c3d2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>adjust MaybeUninit API to discussions</title>
<updated>2019-03-26T08:21:32+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2019-03-18T21:45:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0e0383abc6d1f7d1edc456f66a2e3f4082e9a0a8'/>
<id>urn:sha1:0e0383abc6d1f7d1edc456f66a2e3f4082e9a0a8</id>
<content type='text'>
uninitialized -&gt; uninit
into_initialized -&gt; assume_init
read_initialized -&gt; read
set -&gt; write
</content>
</entry>
<entry>
<title>Rollup merge of #58431 - RalfJung:btree, r=Mark-Simulacrum</title>
<updated>2019-02-22T13:58:00+00:00</updated>
<author>
<name>Mazdak Farrokhzad</name>
<email>twingoow@gmail.com</email>
</author>
<published>2019-02-22T13:58:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=42b9a046d46ef00ecd3a13135f3cd5d7044218b6'/>
<id>urn:sha1:42b9a046d46ef00ecd3a13135f3cd5d7044218b6</id>
<content type='text'>
fix overlapping references in BTree

This fixes two kinds of overlapping references in BTree (both found by running the BTree test suite in Miri).

In `into_slices_mut`, we did `k.into_key_slice_mut()` followed by `self.into_val_slice_mut()` (where `k` is a copy of `self`). Calling `into_val_slice_mut` calls `self.len()`, which creates a shared reference to `NodeHeader`, which unfortunately (due to padding) overlaps with the mutable reference returned by `into_key_slice_mut`.  Hence the key slice got (partially) invalidated.  The fix is to avoid creating an `&amp;NodeHeader` after the first slice got created.

In the iterators, we used to first create the references that will be returned, and then perform the walk on the tree.  Walking the tree creates references (such as `&amp;mut InternalNode`) that overlap with all of the keys and values stored in a pointer; in particular, they overlap with the references the iterator will later return. This is fixed by reordering the operations of walking the tree and obtaining the inner references.

The test suite still passes (and it passes in Miri now!), but there is a lot of code here that I do not understand...
</content>
</entry>
<entry>
<title>Rollup merge of #58553 - scottmcm:more-ihle, r=Centril</title>
<updated>2019-02-20T03:59:10+00:00</updated>
<author>
<name>kennytm</name>
<email>kennytm@gmail.com</email>
</author>
<published>2019-02-19T17:13:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e3a8f7db479ce6562bfc312f412b65dc4f3c77d5'/>
<id>urn:sha1:e3a8f7db479ce6562bfc312f412b65dc4f3c77d5</id>
<content type='text'>
Use more impl header lifetime elision

Inspired by seeing explicit lifetimes on these two:

- https://doc.rust-lang.org/nightly/std/slice/struct.Iter.html#impl-FusedIterator
- https://doc.rust-lang.org/nightly/std/primitive.u32.html#impl-Not

And a follow-up to https://github.com/rust-lang/rust/pull/54687, that started using IHLE in libcore.

Most of the changes in here fall into two big categories:

- Removing lifetimes from common traits that can essentially never user a lifetime from an input (particularly `Drop`, `Debug`, and `Clone`)

- Forwarding impls that are only possible because the lifetime doesn't matter (like `impl&lt;R: Read + ?Sized&gt; Read for &amp;mut R`)

I omitted things that seemed like they could be more controversial, like the handful of iterators that have a `Item: 'static` despite the iterator having a lifetime or the `PartialEq` implementations [where the flipped one cannot elide the lifetime](https://internals.rust-lang.org/t/impl-type-parameter-aliases/9403/2?u=scottmcm).

I also removed two lifetimes that turned out to be completely unused; see https://github.com/rust-lang/rust/issues/41960#issuecomment-464557423
</content>
</entry>
<entry>
<title>Use more impl header lifetime elision</title>
<updated>2019-02-18T03:42:36+00:00</updated>
<author>
<name>Scott McMurray</name>
<email>scottmcm@users.noreply.github.com</email>
</author>
<published>2019-02-18T03:42:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3bea2ca49d24606920b3a81811379debc0668992'/>
<id>urn:sha1:3bea2ca49d24606920b3a81811379debc0668992</id>
<content type='text'>
There are two big categories of changes in here

- Removing lifetimes from common traits that can essentially never user a lifetime from an input (particularly `Drop` &amp; `Debug`)
- Forwarding impls that are only possible because the lifetime doesn't matter (like `impl&lt;R: Read + ?Sized&gt; Read for &amp;mut R`)

I omitted things that seemed like they could be more controversial, like the handful of iterators that have a `Item: 'static` despite the iterator having a lifetime or the `PartialEq` implementations where the flipped one cannot elide the lifetime.
</content>
</entry>
<entry>
<title>split MaybeUninit into several features, expand docs a bit</title>
<updated>2019-02-14T19:07:57+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2019-02-14T19:00:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b5ab2c7f1cf31a642c826047ed1025f4fc13d879'/>
<id>urn:sha1:b5ab2c7f1cf31a642c826047ed1025f4fc13d879</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix invalidating references in BTree iterators</title>
<updated>2019-02-13T16:25:41+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2019-02-13T16:13:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f0bef49cf10c19b72b7d025aedb407ab5745c365'/>
<id>urn:sha1:f0bef49cf10c19b72b7d025aedb407ab5745c365</id>
<content type='text'>
</content>
</entry>
</feed>
