Commit Graph

2556 Commits

Author SHA1 Message Date
Manish Goregaokar ea70cc0ae6 Clarify the literal string 2020-07-18 22:42:11 -07:00
Manish Goregaokar 4c48ac3e88 Use intra-doc links in BTreeMap 2020-07-18 11:41:41 -07:00
Manish Goregaokar 3168b7d6c0 Use more intra-doc links in BTreeSet 2020-07-18 11:21:22 -07:00
Manish Goregaokar d6d48b4ca9 Use intra-doc links in alloc::String 2020-07-18 11:03:44 -07:00
Manish Goregaokar 0d669a97e3 Rollup merge of #74453 - Manishearth:intra-doc-std, r=jyn514
Use intra-doc links in `str` and `BTreeSet`

Fixes #32129, fixes  #32130

A _slight_ degradation in quality is that the `#method.foo` links would previously link to the same page on `String`'s documentation, and now they will navigate to `str`. Not a big deal IMO, and we can also try to improve that.
2020-07-17 18:13:52 -07:00
Manish Goregaokar 91314e2d27 Use intra-doc links in BTreeSet docs 2020-07-17 14:00:01 -07:00
Abendstolz 8aeecc63f8 Fix Arc::as_ptr docs
As a none-native speaker I stumbled upon this, looked it up and couldn't find a phrase, so I made my own assumption that "in any way" was meant (which is the meaning I would've deduced anyway)
2020-07-17 15:21:57 +02:00
bors 86c0b85da9 Auto merge of #74395 - Mark-Simulacrum:stage0-next, r=pietroalbini
Bump version to 1.47

This also bumps to a more recent rustfmt version, just to keep us relatively up to date (though almost nothing has changed in rustfmt we use beyond bumps to the parser infra). No formatting changes as a result of this.

r? @pietroalbini
2020-07-17 03:51:35 +00:00
Mark Rousskov 647d9b525f apply bootstrap cfgs 2020-07-16 19:36:49 -04:00
Stein Somers b82d332c52 Separate off BTreeMap support functions and loose their irrelevant bounds 2020-07-16 12:53:01 +02:00
Stein Somers ca253cab36 Clean up or comment every unwrap in BTreeMap's main code. 2020-07-16 12:53:01 +02:00
Manish Goregaokar 80a7a87be2 Rollup merge of #74295 - ssomers:btree_comments, r=Mark-Simulacrum
Add and fix BTreeMap comments

No code changed (yet)
2020-07-16 00:01:07 -07:00
Yoshua Wuyts 0e9a20f311 Remove unnecessary type hints from the Wake impl 2020-07-14 11:59:11 +02:00
Stein Somers 2aa3133c53 Add and fix BTreeMap comments 2020-07-13 17:37:38 +02:00
Manish Goregaokar 2da709ea21 Rollup merge of #74099 - jonhoo:deque-range, r=dtolnay
Add VecDeque::range* methods

This patch adds `VecDeque::range` and `VecDeque::range_mut` to provide
iterators over a sub-range of a `VecDeque`. This behavior can be
emulated with `skip` and `take`, but directly providing a `Range` is
more ergonomic. This also partially makes up for `VecDeque`'s lack of
`SliceIndex` support.
2020-07-10 23:26:36 -07:00
Jon Gjengset a1a19cbbe1 Add tracking issue 2020-07-10 09:23:52 -04:00
Manish Goregaokar 2d432ae35b Rollup merge of #74143 - pickfire:patch-2, r=jonas-schievink
Try remove unneeded ToString import in liballoc slice
2020-07-09 11:50:42 -07:00
Ivan Tham 0965443001 Remove unneeded ToString import in liballoc slice 2020-07-08 12:47:19 +08:00
Ivan Tham 7bc85e29c9 Liballoc use vec instead of vector
Keep congruency with other parts, full word vector is rarely used.
2020-07-08 12:44:43 +08:00
Manish Goregaokar 7d7b3e637c Rollup merge of #73974 - CAD97:rc-no-weak, r=dtolnay
Move A|Rc::as_ptr from feature(weak_into_raw) to feature(rc_as_ptr)

These were stabilized alongside the Weak versions, but having `feature = "weak_.."` on a fn definition for the non-weak pointers is potentially very misleading, especially in a review context where the impl header may not be immediately visible.

r? @RalfJung
@bors rollup=always
2020-07-06 17:45:28 -07:00
Jon Gjengset 8872ec3760 fixups 2020-07-06 11:52:20 -04:00
Jon Gjengset 7fb26938b1 Add VecDeque::range* methods
This patch adds `VecDeque::range` and `VecDeque::range_mut` to provide
iterators over a sub-range of a `VecDeque`. This behavior can be
emulated with `skip` and `take`, but directly providing a `Range` is
more ergonomic. This also partially makes up for `VecDeque`'s lack of
`SliceIndex` support.
2020-07-06 10:35:33 -04:00
Manish Goregaokar aef2ca6681 Rollup merge of #74025 - tmiasko:try-unwrap, r=Amanieu
Remove unnecessary release from Arc::try_unwrap

The thread that recovers the unique access to Arc inner value (e.g., drop
when ref-count strong reaches zero, successful try_unwrap), ensures that
other operations on Arc inner value happened before by synchronizing
with release operations performed when decrementing the reference counter.

When try_unwrap succeeds, the current thread recovers the unique access
to Arc inner value, so release is unnecessary.

r? @Amanieu
2020-07-05 16:07:32 -07:00
Manish Goregaokar 5311daa136 Rollup merge of #72688 - djugei:master, r=Amanieu
added .collect() into String from Box<str>

I have not created an rfc, because i felt like this is a very minor change.

i have just set a random feature name and rust version as stability attribute, i expect to have to change that, i just don't know what the policy on that is. all guides i could find focused on contributing to the compiler, not contributing to the standard library.

drawbacks: more code in the standard library, could be replaced with specialization: base-implementation for AsRef\<str> and specialization for String and Cow. i can write that code if ppl want it.

advantages: using "real strings" i.e. Box\<str> is as ergonomic as string slices (&str) and string buffers (String) with iterators.
2020-07-05 16:07:19 -07:00
Tomasz Miąsko 8900502a88 Remove unnecessary release from Arc::try_unwrap
The thread that recovers the unique access to Arc inner value (e.g., drop
when ref-count strong reaches zero, successful try_unwrap), ensures that
other operations on Arc inner value happened before by synchronizing
with release operations performed when decrementing the reference counter.

When try_unwrap succeeds, the current thread recovers the unique access
to Arc inner value, so release is unnecessary.
2020-07-04 11:40:27 +02:00
Manish Goregaokar 9a659c54e5 Rollup merge of #73845 - CAD97:weak-as-unsized-ptr, r=RalfJung
Use &raw in A|Rc::as_ptr

This PR uses `&raw` for offsetting `*mut [A]RcInner<T> -> *mut T`.

Additionally, this updates the implementation of `Weak::as_ptr` to support unsized `T`, though it does not yet relax the bounds of `Weak::as_ptr`/`into_raw`/`from_raw` to accept unsized `T`.
2020-07-03 17:16:56 -07:00
bors cd1a46d644 Auto merge of #73882 - nnethercote:avoid-unwrap_or_else-in-allocate_in, r=Amanieu
Avoid `unwrap_or_else` in `RawVec::allocate_in`.

This reduces the amount of LLVM IR generated by up to 1 or 2%.

r? @Amanieu
2020-07-03 03:18:28 +00:00
CAD97 1b5ac57bfd Note Weak.ptr never dangles sooner 2020-07-02 17:08:37 -04:00
CAD97 7391bf882a Move A|Rc::as_ptr from feature(weak_into_raw)
to feature(rc_as_ptr)

These were stabilized alongside the Weak versions,
but having `feature = "weak_.."` on a fn definition
for the non-weak pointers is potentially very confusing.
2020-07-02 16:58:49 -04:00
Ralf Jung dca9310ceb disable BTree min_max test in Miri for now 2020-07-02 10:26:37 +02:00
CAD97 7498cad0d8 Reclarify safety comments in Weak::as_ptr 2020-07-01 16:02:34 -04:00
CAD97 98789ac75a Simplify Weak::as_ptr impl 2020-07-01 15:06:07 -04:00
CAD97 ac40d1eff3 Apply documentation review suggestions
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-07-01 15:05:37 -04:00
Manish Goregaokar 6556f26991 Rollup merge of #73678 - Keno:patch-1, r=LukasKalbertodt
Update Box::from_raw example to generalize better

I know very little about rust, so I saw the example here
```
use std::alloc::{alloc, Layout};

unsafe {
    let ptr = alloc(Layout::new::<i32>()) as *mut i32;
    *ptr = 5;
    let x = Box::from_raw(ptr);
}
```
and tried to generalize it by writing,
```
    let layout = Layout::new::<T>();
    let new_obj = unsafe {
        let ptr = alloc(layout) as *mut T;
        *ptr = obj;
        Box::from_raw(ptr)
    };
```
for some more complicated `T`, which ended up crashing with SIGSEGV,
because it tried to `drop_in_place` the previous object in `ptr` which is
of course garbage. I think that changing this example to use `.write` instead
would be a good idea to suggest the correct generalization. It is also more
consistent with other documentation items in this file, which use `.write`.
I also added a comment to explain it, but I'm not too attached to that,
and can see it being too verbose in this place.
2020-07-01 07:42:42 -07:00
Manish Goregaokar b7d13c0604 Rollup merge of #73466 - matthiaskrgr:char_into_string, r=dtolnay
impl From<char> for String

This allows us to write

````rust
fn char_to_string() -> String {
    'a'.into()
}
````

which was not possible before.
2020-07-01 07:42:36 -07:00
CAD97 aed88e1804 Clarify when rc::data_offset is safe 2020-06-30 15:03:04 -04:00
CAD97 0aecf3c74b Fix invalid pointer deref in Weak::as_ptr 2020-06-30 15:02:21 -04:00
CAD97 fc3dc723da Clarify safety comment for A|Rc::as_ptr 2020-06-30 15:01:48 -04:00
Nicholas Nethercote 3f79d2f33e Avoid unwrap_or_else in RawVec::allocate_in.
This reduces the amount of LLVM IR generated by up to 1 or 2%.
2020-06-30 14:38:57 +10:00
bors 0ca7f74dbd Auto merge of #73391 - pickfire:liballoc-panic-doc, r=Mark-Simulacrum
Add liballoc doc panic detail according to RawVec
2020-06-29 12:00:31 +00:00
CAD97 d8a9c61e1a Use impl for Weak::as_ptr that works for unsized T 2020-06-28 14:33:18 -04:00
CAD97 e4bdf47f4c Do not require ptr validity in rc::data_offset 2020-06-28 14:24:09 -04:00
CAD97 db539c6498 Use raw_ref_op in A|Rc::as_ptr 2020-06-28 14:21:03 -04:00
Dylan MacKenzie 48ebd2cdb8 Remove const_if_match feature gate from libraries 2020-06-28 10:08:09 -07:00
Manish Goregaokar 50026aed24 Rollup merge of #73765 - kraai:remove-blank-line, r=jonas-schievink
Remove blank line
2020-06-26 13:57:46 -07:00
Manish Goregaokar dfbba65786 Rollup merge of #73627 - ssomers:btree_iter_min_max, r=Mark-Simulacrum
Shortcuts for min/max on double-ended BTreeMap/BTreeSet iterators

Closes #59947: a performance tweak that might benefit some. Optimizes `min` and `max ` on all btree double-ended iterators that do not drop, i.e. the iterators created by:

- `BTreeMap::iter`
- `BTreeMap::iter_mut`
- `BTreeMap::keys` and `BTreeSet::iter`
- `BTreeMap::range` and `BTreeSet::range`
- `BTreeMap::range_mut`

Also in these (currently) single-ended iterators, but obviously for `min` only:
- `BTreeSet::difference`
- `BTreeSet::intersection`
- `BTreeSet::symmetric_difference`
- `BTreeSet::union`

Did not do this in iterators created by `into_iter` to preserve drop order, as outlined in #62316.

Did not do this in iterators created by `drain_filter`, possibly to preserve drop order, possibly to preserve predicate invocation, mostly to not have to think about it too hard (I guess maybe it wouldn't be a change for `min`, which is the only shortcut possible in this single-ended iterator).
2020-06-26 13:57:35 -07:00
Manish Goregaokar 23b0776a59 Rollup merge of #73529 - pickfire:liballoc-specfromelem-i8, r=cuviper
Add liballoc impl SpecFromElem for i8

Speedup vec![1_i8; N] for non-zero element.

Before
test do_bench_from_elem_i8        ... bench:         130 ns/iter (+/- 7) = 61 MB/s
test do_bench_from_elem_u8        ... bench:         121 ns/iter (+/- 4) = 66 MB/s
After
test do_bench_from_elem_i8        ... bench:         123 ns/iter (+/- 7) = 65 MB/s
test do_bench_from_elem_u8        ... bench:         121 ns/iter (+/- 5) = 66 MB/s

No speed difference if element is already zero.

```rust
#[bench]
fn do_bench_from_elem_i8(b: &mut Bencher) {
    b.bytes = 8 as u64;
    b.iter(|| {
        let dst = ve::vec![10_i8; 100];
        assert_eq!(dst.len(), 100);
        assert!(dst.iter().all(|x| *x == 10));
    })
}
```

As suggested by @cuviper
https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/SpecForElem.20for.20other.20integers

r? @cuviper
CC @joshtriplett

Edit: Wow, I just realized both reviewers are Josh.
2020-06-26 13:57:31 -07:00
Ivan Tham 31c6d5f35e Add liballoc doc panic detail according to RawVec 2020-06-27 00:08:14 +08:00
KRAAI, MATTHEW [VISUS] cb152eae2f Remove blank line 2020-06-26 06:22:35 -07:00
Stein Somers 42062a5802 Shortcuts for min/max on ordinary BTreeMap/BTreeSet iterators 2020-06-26 10:05:21 +02:00