Skip to content

Commit

Permalink
Quick draft "Result::expect" rfc
Browse files Browse the repository at this point in the history
  • Loading branch information
thepowersgang committed May 13, 2015
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.