Commit Graph

473 Commits

Author SHA1 Message Date
Gary Guo
f9af59def2 Remove irrelevant comment 2020-06-25 23:08:58 +01:00
Lzu Tao
8b2092803e Stabilize Option::zip 2020-06-13 01:27:18 +00:00
Faris Sufyan
6c3856f3ec
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:35 +08:00
Faris Sufyan
ef1688db8e
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:27 +08:00
Faris Sufyan
f445a8286e
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:17 +08:00
Faris Sufyan
adc2bf0cfe
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:13:08 +08:00
Faris Sufyan
644bb24e33
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:12:50 +08:00
Faris Sufyan
a9e7d57238
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:12:35 +08:00
Faris Sufyan
4588c26e53
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:05:53 +08:00
Faris Sufyan
46e9cbea3a
Update src/libcore/option.rs
Co-authored-by: Steve Klabnik <steve@steveklabnik.com>
2020-05-13 21:04:52 +08:00
Faris Sufyan
d80ac6416d
Fix link to map documentation in example
Co-authored-by: Timo <timorcb@gmail.com>
2020-05-10 18:06:30 +08:00
Dolpheyn
2badd41d04 Fix example 2020-05-05 09:50:59 +08:00
Dolpheyn
73f07a47b8 Fix comment position 2020-05-05 08:25:20 +08:00
Dolpheyn
5cb2fa487b Document From trait for Option implementations 2020-05-05 07:27:43 +08:00
LeSeulArtichaut
37514dedab Document unsafety in core::option 2020-04-11 20:11:59 +02:00
Waffle
121bffce81 make "other" in docs of Option::{zip,zip_with} monofont 2020-03-19 22:19:37 +03:00
Waffle
d36d3fa5a6 fixes to Option::{zip,zip_with}
- remove `#[inline]` attributes (see https://github.com/rust-lang/rust/pull/69997#discussion_r393942617)
- fill tracking issue in `#[unstable]` attributes
- slightly improve the docs
2020-03-18 11:26:04 +03:00
Waffle
a5206f9749 add Option::{zip,zip_with} methods under "option_zip" gate
This commit introduces 2 methods - `Option::zip` and `Option::zip_with` with
respective signatures:
- zip: `(Option<T>, Option<U>) -> Option<(T, U)>`
- zip_with: `(Option<T>, Option<U>, (T, U) -> R) -> Option<R>`
Both are under the feature gate "option_zip".

I'm not sure about the name "zip", maybe we can find a better name for this.
(I would prefer `union` for example, but this is a keyword :( )

--------------------------------------------------------------------------------

Recently in a russian rust begginers telegram chat a newbie asked (translated):
> Are there any methods for these conversions:
>
> 1. `(Option<A>, Option<B>) -> Option<(A, B)>`
> 2. `Vec<Option<T>> -> Option<Vec<T>>`
>
> ?

While second (2.) is clearly `vec.into_iter().collect::<Option<Vec<_>>()`, the
first one isn't that clear.

I couldn't find anything similar in the `core` and I've come to this solution:
```rust
let tuple: (Option<A>, Option<B>) = ...;
let res: Option<(A, B)> = tuple.0.and_then(|a| tuple.1.map(|b| (a, b)));
```

However this solution isn't "nice" (same for just `match`/`if let`), so I thought
that this functionality should be in `core`.
2020-03-18 10:25:58 +03:00
Dylan DPC
2be062a4b0
Rollup merge of #68918 - brson:unwrapdoc, r=Dylan-DPC
Don't use the word "unwrap" to describe "unwrap" methods

It's tautological, and "unwrap" is essentially Rust-specific jargon.

I was teaching a newbie some Rust, and doing the usual hand-waving about error handling using unwrap. They asked what 'unwrap' means. I said look it up in the docs. The docs read (paraphrased) "unwrap unwraps". I was embarrassed.

This changes all the Option/Result functions with unwrapping behavior to use a variation on a single description:

> "Returns the contained `Some/Ok` value [or ...]."

It also renames the closure of `Result::unwrap_or_else` to `default` for consistency with `Option`, and perhaps makes a few other small tweaks.

Previous: https://github.com/rust-lang/rust/pull/68849
2020-02-09 00:53:55 +01:00
Brian Anderson
8251e12950 Don't use the word 'unwrap' to describe core unwrapping functions
It's tautological, and Rust-specific Jargon.

This changes various Option/Result methods to consistently describe unwrapping
behavior using the words "return", "contain", "consume".

It also renames the closure argument of `Return::unwrap_or_else` to `default` to
be consistent with `Option`.
2020-02-07 14:08:24 +08:00
Tom A. Wagner
d646463a45 Mark fn map_or() as eagerly evaluated.
In the docs for option.rs and result.rs, it is noted for all *_or()
functions that they are eagerly evaluated, except for the map_or()
function.
This commit adds this missing documentation to the two files.
2020-02-06 19:56:25 +01:00
Marincia Catalin
2ce14b8a19
Update option.rs
I updated the example of the `expect` examples so they won't contain depressing sentences any more !
2020-02-01 19:05:50 +02:00
Esteban Küber
6eaf59dfc8 use diagnostic_item and modify wording 2020-01-23 11:51:56 -08:00
Mazdak Farrokhzad
5ea69781f4
Rollup merge of #67966 - popzxc:core-std-matches, r=Centril
Use matches macro in libcore and libstd

This PR replaces matches like

```rust
match var {
    value => true,
    _ => false,
}
```

with use of `matches!` macro.

r? @Centril
2020-01-09 00:22:10 +01:00
Igor Aleksanov
f720469fd0 Use matches macro in libcore and libstd 2020-01-08 07:10:28 +03:00
Adam Perry
2e9d573d3f Option's panics are all #[track_caller].
Also includes a simple test with a custom panic hook to ensure we don't regress.
2020-01-04 19:52:37 -08:00
David Tolnay
95e00bfed8
Format libcore with rustfmt
This commit applies rustfmt with default settings to files in
src/libcore *that are not involved in any currently open PR* to minimize
merge conflicts. The list of files involved in open PRs was determined
by querying GitHub's GraphQL API with this script:
https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8

With the list of files from the script in `outstanding_files`, the
relevant commands were:

    $ find src/libcore -name '*.rs' | xargs rustfmt --edition=2018
    $ rg libcore outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of
most of the rest of libcore.
2019-11-26 23:02:11 -08:00
Oliver Scherer
02f9167f94 Have tidy ensure that we document all unsafe blocks in libcore 2019-11-06 11:04:42 +01:00
Mazdak Farrokhzad
c8eefdffe9
Rollup merge of #64747 - ethanboxx:master, r=Centril
Stabilize `Option::flatten`

- PR: https://github.com/rust-lang/rust/pull/60256
- Tracking issue: https://github.com/rust-lang/rust/issues/60258

@elahn

> I was trying to `flat_map()` and found `map().flatten()` does the trick. This has been on nightly for 4 months, can we stabilise it?

@ethanboxx

> @Centril Helped me get this merged. What is the stabilization process?

@Centril

> @ethanboxx I'd just file a PR to stabilize it and we'll ask T-libs to FCP.

So here I am.

I am was unsure what number to put in `since = "-"` so I copied what someone had done in a recent PR.
2019-10-28 04:53:05 +01:00
Mateusz Mikuła
bedbf3bacb Apply clippy::single_match suggestion 2019-10-22 19:23:10 +02:00
David Sinclair
2a5c31ca51 Rename the default argument 'def' to 'default'
Fixes: #65492
2019-10-20 22:22:44 +02:00
Carol (Nichols || Goulding)
4ea1a1983e
Remove unneeded ref from docs
Will reduce confusion like in https://users.rust-lang.org/t/help-understanding-the-ref-t-syntax/33779 since match ergonomics means you (almost) never have to say `ref` anymore!
2019-10-19 11:20:05 -04:00
Ethan Brierley
65af429c68 Stabilize Option::flatten 2019-10-19 11:04:53 +01:00
Tyler Mandry
008526340a
Rollup merge of #64708 - SimonSapin:option-deref, r=Centril
Stabilize `Option::as_deref` and `Option::as_deref_mut`

The tracking issue https://github.com/rust-lang/rust/issues/50264 still has unresolved question for the corresponding `Result` methods.
2019-10-05 21:54:47 -07:00
hman523
6c6d27d685 Fixed a misleading documentation issue #64844 2019-09-30 00:26:42 -05:00
Simon Sapin
0797712e29 Stabilize Option::deref and Option::deref_mut
The tracking issue https://github.com/rust-lang/rust/issues/50264
still has unresolved question for the corresponding `Result` methods.
2019-09-23 17:14:26 +02:00
Taiki Endo
3a046ffa71 Elide lifetimes in Pin<&(mut) Self> 2019-09-17 08:39:34 +09:00
Guillaume Gomez
fdc4f9028f Add missing examples for Option type 2019-08-30 10:38:11 +02:00
Mazdak Farrokhzad
c32735d03c
Rollup merge of #62459 - timvermeulen:result_sum_internal_iteration, r=scottmcm
Use internal iteration in the Sum and Product impls of Result and Option

This PR adds internal iteration to the `ResultShunt` iterator type underlying the `Sum` and `Product` impls of `Result`. I had to change `ResultShunt` to hold a mutable reference to an error instead, similar to `itertools::ProcessResults`, in order to be able to pass the `ResultShunt` itself by value (which is necessary for internal iteration).

`ResultShunt::process` can unfortunately no longer be an associated function because that would make it generic over the lifetime of the error reference, which wouldn't work, so I turned it into the free function `process_results`.

I removed the `OptionShunt` type and forwarded the `Sum` and `Product` impls of `Option` to their respective impls of `Result` instead, to avoid having to repeat the internal iteration logic.
2019-08-06 15:36:27 +02:00
Lzu Tao
c56d8a81e2 Add links to None in Option doc 2019-07-29 15:56:40 +00:00
Tim Vermeulen
2e41ba8742 Use internal iteration in the Sum and Product impls of Result and Option 2019-07-29 02:40:50 +02:00
Stargateur
3334802c83 Refactoring use commun code between option, result and accum 2019-07-27 02:17:56 +02:00
Yuki Okushi
f2a97210b2 Use DerefMut 2019-07-18 15:18:41 +09:00
Brad Gibson
d1aca3aea5 renamed inner_deref feature's deref*() methods as_deref*() as per discussion https://github.com/rust-lang/rust/issues/50264 2019-07-18 15:17:30 +09:00
bors
d56128d291 Auto merge of #62596 - cuviper:expect_none, r=rkruppe
Add Option::expect_none(msg) and unwrap_none()

These are `Option` analogues to `Result::expect_err` and `unwrap_err`.
2019-07-17 08:29:02 +00:00
Mark Rousskov
d6f0c0c47d
Rollup merge of #62491 - GuillaumeGomez:fix-pin-urls-for-option, r=QuietMisdreavus
Fix Pin urls in Option documentation

Fixes the following situation:

![Screenshot from 2019-07-08 13-24-59](https://user-images.githubusercontent.com/3050060/60806822-55dfdc00-a184-11e9-9ee3-279e82fc92bd.png)

r? @QuietMisdreavus
2019-07-15 19:55:01 -04:00
Mazdak Farrokhzad
f169b15e1d
Rollup merge of #62431 - czipperz:add-messages-to-must-use-is_-methods, r=scottmcm
Add messages to `Option`'s and `Result`'s `must_use` annotation for `is_*`

r? @RalfJung
2019-07-12 22:46:41 +02:00
Josh Stone
74c8d984db Add tracking issue 62633 2019-07-12 13:07:53 -07:00
Josh Stone
955979ab28 Make cold unwraps take &dyn Debug 2019-07-11 12:40:38 -07:00
Josh Stone
5a7e730935 Add Option::expect_none(msg) and unwrap_none()
These are `Option` analogues to `Result::expect_err` and `unwrap_err`.
2019-07-11 12:05:14 -07:00