Skip to content

Commit

Permalink
Quick draft "Result::expect" rfc
Browse files Browse the repository at this point in the history
thepowersgang committed May 13, 2015

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 64ccd29 commit 77c2975
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions text/0000-result-expect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
- Feature Name: `result_expect`
- Start Date: 2015-05-13
- RFC PR: (leave this empty)
- Rust Issue: (leave this empty)

# Summary

Add an `expect` method to the Result type, bounded to `E: Debug`

# Motivation

While `Result::unwrap` exists, it does not allow annotating the panic message with the operation
attempted (e.g. what file was being opened). This is at odds to 'Option' which includes both
`unwrap` and `expect` (with the latter taking an arbitrary failure message).

# Detailed design

Add a new method to the same `impl` block as `Result::unwrap` that takes a `&str` message and
returns `T` if the `Result` was `Ok`. If the `Result` was `Err`, it panics with both the provided
message and the error value.

The format of the error message is left undefined in the documentation, but will most likely be
the following
```
panic!("{}: {:?}", msg, e)
```

# Drawbacks

- It involves adding a new method to a core rust type.
- The panic message format is less obvious than it is with `Option::expect` (where the panic message is the message passed)

# Alternatives

- We are perfectly free to not do this.
- A macro could be introduced to fill the same role (which would allow arbitrary formatting of the panic message).

# Unresolved questions

Are there any issues with the proposed format of the panic string?

0 comments on commit 77c2975

Please sign in to comment.