"expect" is like the word "assert". You express which invariant should always be true and therefore there should be no failure. The use of `.expect("Could not read file")` is actually wrong, because it can fail.
let mut file = File::create("valuable_data.txt").unwrap();
file.write_all(b"important message").expect("failed to write message");
The use of .expect("Could not read file") is consistent with Rust's documentation.
And I agree with OP that .expect() is poorly named. I wouldn't raise it as an issue on the work of others who just use Rust and are stuck with it though.
Comments
The article looks great and I’m looking forward to reading it; this comment is not a criticism of the article.
This API is the only bad thing about Rust!
It’s so unfortunate to have an API that reads I think we should all just forget it’s there and use"expect" is like the word "assert". You express which invariant should always be true and therefore there should be no failure. The use of `.expect("Could not read file")` is actually wrong, because it can fail.
That is not how Rust documents expect() should be used. Rust's own documentation (https://doc.rust-lang.org/std/result/) contains:
The use of .expect("Could not read file") is consistent with Rust's documentation.And I agree with OP that .expect() is poorly named. I wouldn't raise it as an issue on the work of others who just use Rust and are stuck with it though.
I also wish I could write:
.or_panic(“unexpected fatal error”)
Or
.unwrap_or_panic