Commit Graph

1561 Commits

Author SHA1 Message Date
Lukas Kalbertodt
4038042eb0 Add [T; N]::each_ref and [T; N]::each_mut
These methods work very similarly to `Option`'s methods `as_ref` and
`as_mut`. They are useful in several situation, particularly when
calling other array methods (like `map`) on the result. Unfortunately,
we can't easily call them `as_ref` and `as_mut` as that would shadow
those methods on slices, thus being a breaking change (that is likely
to affect a lot of code).
2021-01-11 01:09:22 -08:00
CoffeeBlend
dec8c033a3 Add tracking issue for array_assume_init 2021-01-11 10:07:29 +01:00
Miguel Ojeda
76299b3f42 Add SAFETY annotations
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2021-01-10 15:59:58 +01:00
Miguel Ojeda
679f6f3473 Add unwrap_unchecked() methods for Option and Result
In particular:
  - `unwrap_unchecked()` for `Option`.
  - `unwrap_unchecked()` and `unwrap_err_unchecked()` for `Result`.

These complement other `*_unchecked()` methods in `core` etc.

Currently there are a couple of places it may be used inside rustc
(`LinkedList`, `BTree`). It is also easy to find other repositories
with similar functionality.

Fixes #48278.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2021-01-10 15:14:38 +01:00
Patryk Wychowaniec
d2f8e398f1 Rework diagnostics for wrong number of generic args 2021-01-10 13:07:40 +01:00
Yuki Okushi
5c0f5b69c2 Rollup merge of #79502 - Julian-Wollersberger:from_char_for_u64, r=withoutboats
Implement From<char> for u64 and u128.

With this PR you can write
```
let u = u64::from('👤');
let u = u128::from('👤');
```

Previously, you could already write `as` conversions ([Playground link](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=cee18febe28e69024357d099f07ca081)):
```
// Lossless conversions
dbg!('👤' as u32);    // Prints 128100
dbg!('👤' as u64);    // Prints 128100
dbg!('👤' as u128);   // Prints 128100

// truncates, thus no `From` impls.
dbg!('👤' as u8);     // Prints 100
dbg!('👤' as u16);    // Prints 62564

// These `From` impls already exist.
dbg!(u32::from('👤'));               // Prints 128100
dbg!(u64::from(u32::from('👤')));    // Prints 128100
```

The idea is from ``@gendx`` who opened [this Internals thread](https://internals.rust-lang.org/t/implement-from-char-for-u64/13454), and ``@withoutboats`` responded that someone should open a PR for it.
Some people mentioned `From<char>` impls for `f32` and `f64`, but that doesn't seem correct to me, so I didn't include them here.

I don't know what the feature should be named. Must it be registered somewhere, like unstable features?

r? ``@withoutboats``
2021-01-10 16:55:53 +09:00
Eric Seppanen
eef95871a4 fix broken link in PartialEq doc
PartialEq doc was attempting to link to [`Eq`] but instead we got a link
to `eq`. Disambiguate with "trait@Eq".
2021-01-09 22:40:48 -08:00
bors
ef589490a7 Auto merge of #80808 - CAD97:patch-3, r=nagisa
Fix typo in Step trait

... I don't know how this major typo happened, whoops 🙃

`@bors` rollup=always
(comment only change)
2021-01-09 13:56:15 +00:00
Julian Wollersberger
e8cb72c503 Update the stabilisation version. 2021-01-09 12:31:30 +01:00
kadmin
e5094a2851 Add more benchmarks 2021-01-08 09:50:35 +00:00
kadmin
fb8cc7bd99 Clean up branching in skip 2021-01-08 08:05:31 +00:00
Christopher Durham
02850d3f30 Fix typo in Step trait 2021-01-07 21:29:17 -05:00
Yuki Okushi
1ed90e4f06 Rollup merge of #80791 - mrcz:master, r=jyn514
Fix type name in doc example for Iter and IterMut
2021-01-08 11:11:47 +09:00
bors
c8915eebea Auto merge of #80790 - JohnTitor:rollup-js1noez, r=JohnTitor
Rollup of 10 pull requests

Successful merges:

 - #80012 (Add pointing const identifier when emitting E0435)
 - #80521 (MIR Inline is incompatible with coverage)
 - #80659 (Edit rustc_ast::tokenstream docs)
 - #80660 (Properly handle primitive disambiguators in rustdoc)
 - #80738 (Remove bottom margin from crate version when the docs sidebar is collapsed)
 - #80744 (rustdoc: Turn `next_def_id` comments into docs)
 - #80750 (Don't use to_string on Symbol in rustc_passes/check_attr.rs)
 - #80769 (Improve wording of parse doc)
 - #80780 (Return EOF_CHAR constant instead of magic char.)
 - #80784 (rustc_parse: Better spans for synthesized token streams)

Failed merges:

 - #80785 (rustc_ast_pretty: Remove `PrintState::insert_extra_parens`)

r? `@ghost`
`@rustbot` modify labels: rollup
2021-01-07 18:20:12 +00:00
Marcus Svensson
358ef56216 Enclose types in comments in backticks 2021-01-07 18:36:25 +01:00
Marcus Svensson
10180b4c53 Fix type name in doc example for Iter and IterMut 2021-01-07 18:22:37 +01:00
bors
8f0b945cfc Auto merge of #77853 - ijackson:slice-strip-stab, r=Amanieu
Stabilize slice::strip_prefix and slice::strip_suffix

These two methods are useful.  The corresponding methods on `str` are already stable.

I believe that stablising these now would not get in the way of, in the future, extending these to take a richer pattern API a la `str`'s patterns.

Tracking PR: #73413.  I also have an outstanding PR to improve the docs for these two functions and the corresponding ones on `str`: #75078

I have tried to follow the [instructions in the dev guide](https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#stabilization-pr).  The part to do with `compiler/rustc_feature` did not seem applicable.  I assume that's because these are just library features, so there is no corresponding machinery in rustc.
2021-01-07 15:21:30 +00:00
Ejez
2b8109f229 Improve wording of parse doc
Change:
```
`parse` can parse any type that...
```
to:
```
`parse` can parse into any type that...
```
Word `into` added to be more precise and in coherence with other parts of the doc.
2021-01-07 07:47:03 +03:00
Thom Chiovoloni
cce258b2b2 Make NonNull::as_ref (and friends) return refs with unbound lifetimes 2021-01-06 19:04:45 -08:00
Lukas Lueg
7a0ada0427 Remove FIXME-notes 2021-01-07 00:45:47 +01:00
Frank Steffahn
3e0cef7d69 Fix overlength lines in core::pin. 2021-01-05 20:14:02 +01:00
Frank Steffahn
684edf7a70 Add titles (tooltips) to defined links in core::pin. 2021-01-05 19:43:42 +01:00
Frank Steffahn
e65385fbfa Fix broken links to Drop that used to point to Drop::drop due to the markdown link definition names being case insensitive. 2021-01-05 19:43:42 +01:00
Frank Steffahn
87ac118ba3 Add more links to core::pin to improve visual consistency. 2021-01-05 19:43:27 +01:00
bors
da305a2b00 Auto merge of #80711 - camelid:intrinsic-of-val-safety, r=oli-obk
Make `size_of_val` and `min_align_of_val` intrinsics unsafe

Fixes #80668.

r? `@oli-obk`
2021-01-05 17:07:25 +00:00
Frank Steffahn
ceaeb249a3 Exclude single type parameters from links in core::pin for more visual consistency. 2021-01-05 17:39:18 +01:00
Frank Steffahn
d3915c555e Fix spacing in docs for core::pin by combining consequent code blocks using HTML-syntax. 2021-01-05 17:08:51 +01:00
bors
3b63e16552 Auto merge of #80717 - mbartlett21:patch-2, r=dtolnay
Add more code spans to docs in intrinsics.rs

I have added some more code spans in core/src/intrinsics.rs, changing some `=` to `==`, etc. I also changed the wording in some sections.
2021-01-05 14:15:49 +00:00
bors
68ec332611 Auto merge of #80699 - usbalbin:const_copy_tracking_issue, r=oli-obk
const_intrinsic_copy - Add Reference to tracking issue

Add reference to tracking issue #80697 for feature gate added in previous PR #79684
2021-01-05 11:29:27 +00:00
mbartlett21
63dd00b97b Add code spans to docs in intrinsics.rs 2021-01-05 17:27:10 +10:00
Camelid
bbf175df3c Make size_of_val and min_align_of_val intrinsics unsafe 2021-01-04 19:23:55 -08:00
Yuki Okushi
ee94d9d690 Rollup merge of #80677 - kw-fn:patch-2, r=jyn514
doc -- list edit for consistency
2021-01-05 09:52:50 +09:00
Yuki Okushi
cbdc24174b Rollup merge of #80656 - booleancoercion:master, r=sfackler
Fixed documentation error for `std::hint::spin_loop`

Fixes #80644.
2021-01-05 09:52:45 +09:00
Albin Hedman
63f5d6111a Added reference to tracking issue and removed unneeded line 2021-01-04 19:36:25 +01:00
Ian Jackson
2c1d6557c9 Remove two obsolete uses of #![feature(split_inclusive)]
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2021-01-04 16:29:12 +00:00
Ian Jackson
be226e49e4 Stabilize split_inclusive
Closes #72360.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2021-01-04 16:20:08 +00:00
oliver
e152582a2b doc -- list edit for consistency 2021-01-04 04:50:24 +00:00
The8472
af2983a912 TrustedRandomAaccess spec composes incorrectly for nested iter::Zips
After partially consuming a Zip adapter and then wrapping it into
another Zip where the adapters use their TrustedRandomAccess specializations
leads to the outer adapter returning elements which should have already been
consumed.
2021-01-04 01:12:21 +01:00
bool
514b0ce9d2 Fixed documentation error 2021-01-03 19:54:54 +02:00
Guillaume Gomez
2072e11730 Rollup merge of #80591 - lcnr:incomplete-features, r=RalfJung
remove allow(incomplete_features) from std

cc https://github.com/rust-lang/rust/pull/80349#issuecomment-753357123

> Now I am somewhat concerned that the standard library uses some of these features...

I think it is theoretically ok to use incomplete features in the standard library or the compiler if we know that there is an already working subset and we explicitly document what we have to be careful about. Though at that point it is probably better to try and split the incomplete feature into two separate ones, similar to `min_specialization`.

Will be interesting once `feature(const_evaluatable_checked)` works well enough to imo be used in the compiler but not yet well enough to be removed from `INCOMPLETE_FEATURES`.

r? `@RalfJung`
2021-01-03 17:09:08 +01:00
bors
05dfaba442 Auto merge of #79827 - tmiasko:size-align, r=kennytm
Describe why `size_align` have not been inlined so far

although it is used only in one place.
2021-01-03 03:43:29 +00:00
Ralf Jung
a5b89a00cb extend comment
Co-authored-by: lcnr <bastian_kauschke@hotmail.de>
2021-01-02 16:58:38 +01:00
bors
f6b6d5cf64 Auto merge of #79870 - sharnoff:smart-pointer-Any-type_id, r=shepmaster
Add docs note about `Any::type_id` on smart pointers

Fixes #79868.

There's an issue I've run into a couple times while using values of type `Box<dyn Any>` - essentially, calling `value.type_id()` doesn't dereference to the trait object, but uses the implementation of `Any` for `Box<dyn Any>`, giving us the `TypeId` of the container instead of the object inside it.

I couldn't find any notes about this in the documentation and - while it could be inferred from existing knowledge of Rust and the blanket implemenation of `Any` - I think it'd be nice to have a note about it in the documentation for the `any` module.

Anyways, here's a first draft of a section about it. I'm happy to revise wording :)
2021-01-02 04:12:48 +00:00
CoffeeBlend
72a3dee16f Format code 2021-01-01 22:56:54 +01:00
CoffeeBlend
0ff1e6c697 Add test for MaybeUninit::array_assume_init 2021-01-01 22:12:49 +01:00
CoffeeBlend
826bc3648a Implement MaybeUninit::array_assume_init 2021-01-01 22:03:14 +01:00
Bastian Kauschke
6cf47ff4f0 remove incomplete features from std 2021-01-01 19:57:10 +01:00
Lukas Lueg
7ed824ebd1 Add Iterator::intersperse_with 2020-12-31 23:09:13 +01:00
Camelid
0506789014 Remove many unnecessary manual link resolves from library
Now that #76934 has merged, we can remove a lot of these! E.g, this is
no longer necessary:

    [`Vec<T>`]: Vec
2020-12-31 11:54:32 -08:00
bors
b33e234155 Auto merge of #79895 - Kerollmops:slice-group-by, r=m-ou-se
The return of the GroupBy and GroupByMut iterators on slice

According to https://github.com/rust-lang/rfcs/pull/2477#issuecomment-742034372, I am opening this PR again, this time I implemented it in safe Rust only, it is therefore much easier to read and is completely safe.

This PR proposes to add two new methods to the slice, the `group_by` and `group_by_mut`. These two methods provide a way to iterate over non-overlapping sub-slices of a base slice that are separated by the predicate given by the user (e.g. `Partial::eq`, `|a, b| a.abs() < b.abs()`).

```rust
let slice = &[1, 1, 1, 3, 3, 2, 2, 2];

let mut iter = slice.group_by(|a, b| a == b);
assert_eq!(iter.next(), Some(&[1, 1, 1][..]));
assert_eq!(iter.next(), Some(&[3, 3][..]));
assert_eq!(iter.next(), Some(&[2, 2, 2][..]));
assert_eq!(iter.next(), None);
```

[An RFC](https://github.com/rust-lang/rfcs/pull/2477) was open 2 years ago but wasn't necessary.
2020-12-31 12:00:43 +00:00