Commit graph

99 commits

Author SHA1 Message Date
Jane Lusby
00a315c515
Update library/core/src/result.rs
Co-authored-by: Emil Thorenfeldt <emt@magenta.dk>
2022-04-18 16:31:21 -07:00
Jane Lusby
eca7dd20d5
Update library/core/src/result.rs
Co-authored-by: Emil Thorenfeldt <emt@magenta.dk>
2022-04-18 16:31:13 -07:00
Jane Lusby
5d98acb19c update docs for option to crossreference to the result docs 2022-04-15 10:24:34 -07:00
Jane Lusby
80c362b92b add should_panic annotations 2022-04-14 13:22:24 -07:00
Jane Lusby
3d951b3d21 add necessary text attribute to code block of panic output 2022-04-14 11:40:27 -07:00
Jane Lusby
dfb37cb088 Add section on common message styles for Result::expect 2022-04-13 19:08:10 -07:00
Pietro Albini
181d28bb61
trivial cfg(bootstrap) changes 2022-04-05 23:18:40 +02:00
David Tolnay
4246916619
Adjust feature names that disagree on const stabilization version 2022-03-31 12:34:48 -07:00
Deadbeef
1f3ee7f32e
Rename ~const Drop to ~const Destruct 2022-03-21 17:04:03 +11:00
Dylan DPC
6d66020594
Rollup merge of #94765 - m-ou-se:is-some-and, r=Dylan-DPC
Rename is_{some,ok,err}_with to is_{some,ok,err}_and.

This renames `is_{some,ok,err}_with` to `is_{some,ok,err}_and`. This was discussed on the [tracking issue](https://github.com/rust-lang/rust/issues/93050).
2022-03-11 03:32:04 +01:00
T-O-R-U-S
72a25d05bf Use implicit capture syntax in format_args
This updates the standard library's documentation to use the new syntax. The
documentation is worthwhile to update as it should be more idiomatic
(particularly for features like this, which are nice for users to get acquainted
with). The general codebase is likely more hassle than benefit to update: it'll
hurt git blame, and generally updates can be done by folks updating the code if
(and when) that makes things more readable with the new format.

A few places in the compiler and library code are updated (mostly just due to
already having been done when this commit was first authored).
2022-03-10 10:23:40 -05:00
Matthias Krüger
c0259626b6
Rollup merge of #91804 - woppopo:const_clone, r=oli-obk
Make some `Clone` impls `const`

Tracking issue: #91805
`Clone::clone_from` and some impls (Option, Result) bounded on `~const Drop`.

```rust
// core::clone
impl const Clone for INTEGER
impl const Clone for FLOAT
impl const Clone for bool
impl const Clone for char
impl const Clone for !
impl<T: ?Sized> const Clone for *const T
impl<T: ?Sized> const Clone for *mut T
impl<T: ?Sized> const Clone for &T

// core::option
impl<T> const Clone for Option<T>
where
    T: ~const Clone + ~const Drop

// core::result
impl<T, E> const Clone for Result<T, E>
where
    T: ~const Clone + ~const Drop,
    E: ~const Clone + ~const Drop,

// core::convert
impl const Clone for Infallible

// core::ptr
impl<T: ?Sized> const Clone for NonNull<T>
impl<T: ?Sized> const Clone for Unique<T>
```
2022-03-09 23:14:09 +01:00
Mara Bos
7c7411fb5d Rename is_{some,ok,err}_with to is_{some,ok,err}_and. 2022-03-09 11:20:36 +01:00
Matthias Krüger
e22331ce02
Rollup merge of #92385 - clarfonthey:const_option, r=fee1-dead
Add Result::{ok, err, and, or, unwrap_or} as const

Already opened tracking issue #92384.

I don't think that this should actually cause any issues as long as the constness is unstable, but we may want to double-check that this doesn't get interpreted as a weird `Drop` bound even for non-const usages.
2022-03-08 11:04:50 +01:00
cyqsimon
f6f93fd7ba
Add note on Windows path behaviour 2022-02-12 12:52:42 +08:00
cyqsimon
adfac00f45
Result::and_then: show type conversion 2022-02-12 12:19:03 +08:00
cyqsimon
7eaecc6508
Result::and_then: improve basic example 2022-02-12 12:12:11 +08:00
cyqsimon
942eaa7ffc
Add negative example for Result::and_then 2022-02-11 09:57:19 +08:00
cyqsimon
bd421e2880
More practical examples for Result::and_then 2022-02-10 17:59:46 +08:00
Scott McMurray
413945ecc5 Change ResultShunt to be generic over Try
Just a refactor (and rename) for now, so it's not `Result`-specific.

This could be used for a future `Iterator::try_collect`, or similar, but anything like that is left for a future PR.
2022-02-07 12:57:25 -08:00
ltdk
19645ac05a Add Result::{ok, err, and, or, unwrap_or} as const 2022-01-29 18:37:55 -05:00
Mara Bos
5fee3e7a9c Fix is_some_with tests. 2022-01-19 00:12:35 +01:00
Mara Bos
45dee47fec Improve is_err_with example. 2022-01-18 22:53:43 +01:00
Mara Bos
148234ff73 Add is_some_with tracking issue number. 2022-01-18 22:18:16 +01:00
Mara Bos
aaebae973f Add Result::{is_ok_with, is_err_with}. 2022-01-18 22:17:44 +01:00
Lucas Kent
08829853d3 eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
Matthias Krüger
051d591edf
Rollup merge of #92483 - ksqsf:master, r=dtolnay
Stabilize `result_cloned` and `result_copied`

Tracking issue: #63168

The FCP is now completed.
2022-01-05 15:05:47 +01:00
ksqsf
1c547f422a Stabilize result_cloned and result_copied 2022-01-04 13:23:32 +08:00
David Tolnay
7dec41a236
Move contains method of Option and Result lower in docs 2022-01-03 10:46:15 -08:00
David Tolnay
b7a0ab18f6
Consolidate impl Result<&mut T, E> 2021-12-30 10:31:26 -08:00
David Tolnay
e63e2680da
Consolidate impl Result<&T, E> 2021-12-30 10:30:28 -08:00
David Tolnay
b2df61fa9f
Move Result::into_err 2021-12-30 10:28:54 -08:00
David Tolnay
778ca204a6
Move Result::into_ok 2021-12-30 10:28:23 -08:00
David Tolnay
06ea5ebe4e
Move Result::expect_err and Result::unwrap_err 2021-12-30 10:27:43 -08:00
David Tolnay
aa2aca2c8c
Move Result::unwrap_or_default 2021-12-30 10:26:36 -08:00
David Tolnay
15f57a6c59
Move Result::expect and Result::unwrap 2021-12-30 10:25:42 -08:00
David Tolnay
5aa8f91ff0
Move Result::as_deref_mut 2021-12-30 10:24:23 -08:00
David Tolnay
eda61d8d8a
Move Result::as_deref 2021-12-30 10:23:46 -08:00
bors
df89fd2063 Auto merge of #91752 - yaahc:track-caller-result, r=cuviper
Readd track_caller to Result::from_residual

This is a followup on https://github.com/rust-lang/rust/issues/87401 in and an attempt to move the issue towards resolution.

As part of the overhaul of the Try trait we removed the ability for errors to grab location information during propagation via `?` with the builtin `std::result::Result`. The previously linked issue has a fair bit of discussion into the reasons for and against the usage of `#[track_caller]` on the `FromResidual` impl on `Result` that I will do my best to summarize.

---
### For

- https://github.com/rust-lang/rust/issues/87401#issuecomment-915053533: Difficulties with using non `std::result::Result` like types
- https://github.com/rust-lang/rust/issues/87401#issuecomment-978355102: Inconsistency with functionality provided for recoverable (Result) and non-recoverable errors (panic), where panic provides a location and Result does not, pushing some users towards using panic

### Against

- https://github.com/rust-lang/rust/issues/84277#issuecomment-885322833: concern that this will bloat callers that never use this data

---

Personally, I want to quantify the performance / bloat impact of re-adding this attribute, and fully evaluate the pros and cons before deciding if I need to switch `eyre` to have a custom `Result` type, which would also mean I need `try_trait_v2` to be stabilized, cc `@scottmcm.` If the performance impact is minor enough in the general case I think I would prefer that the default `Result` type has the ability to track location information for consistency with `panic` error reporting, and leave it to applications that need particularly high performance to handle the micro optimizations of introducing their own efficient custom Result type or matching manually.

Alternatively, I wonder if the performance penalty on code that doesn't use the location information on `FromResidual` could be mitigated via new optimizations.
2021-12-15 06:34:00 +00:00
Deadbeef
e22fe4008c
Revert "Auto merge of #89450 - usbalbin:const_try_revert, r=oli-obk"
This reverts commit a8387aef8c, reversing
changes made to 6e12110812.
2021-12-12 12:34:59 +08:00
woppopo
662024478d Make some Clone impls const 2021-12-12 04:19:23 +09:00
Jane Lusby
44756d8d96 Readd track_caller to Result::from_residual 2021-12-10 09:17:55 -08:00
Manish Goregaokar
917dafc73a Add separate impl of unwrap_failed to avoid constructing trait objects 2021-12-10 13:12:26 +05:30
Scott McMurray
b96b9b4093 Make array::{try_from_fn, try_map} and Iterator::try_find generic over Try
Fixes 85115

This only updates unstable functions.

`array::try_map` didn't actually exist before, despite the tracking issue 79711 still being open from the old PR 79713.
2021-12-02 11:23:50 -08:00
Ibraheem Ahmed
2e8358e1ab add Option::inspect and Result::{inspect, inspect_err} 2021-11-28 23:31:45 -05:00
Miguel Ojeda
63d7882575 Stabilize option_result_unwrap_unchecked
Closes https://github.com/rust-lang/rust/issues/81383.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2021-10-20 04:03:43 +02:00
woppopo
ea28abee28 Make Result::as_mut const 2021-10-17 18:39:54 +09:00
Orson Peters
c3dfda0e3d Rebase Result::map_or_else doc wording on top of #89400. 2021-10-06 09:03:18 +02:00
Jubilee
9e387cf27e
Rollup merge of #89400 - Nitepone:nitepone/map-or-else-docfix, r=dtolnay
Improve wording of `map_or_else` docs

Changes doc text to refer to the "default" parameter as the "default"
function.

Previously, the doc text referred to the "f" parameter as the "default" function; and the "default" parameter as the "fallback" function.
2021-10-04 13:58:09 -07:00
Cameron Steffen
eec856bfbc Make diangostic item names consistent 2021-10-02 19:38:19 -05:00