I had same thoughts about Rust's pinicking politics, as topicstarter. IMHO, there are too many situations where panic can occure implicitly.
For example, before i have started read the Rust's tutorial, i have been supposing, that indexing of arrays and vectors either returns some optional type (Option/Result) or, as more fast way, allows indexing only by some "Indexer" type (that internally is unsigned integer, but already bounds-checked). It was unpleasant surprise for me, that Rust just stupidly throws panic when out-of-bounds. Now i know that there is .get method returing Option, but natural form of indexing goes against Rust's statement of writing reliable programs.
So, i have a questions:
1). Does Rust always-always performs bounds checking when indexing arrays and vectors? If i have already bounds-checked index, does Rust still check it again? If Yes, Is there faster way, like proposed "Indexer"?
2). Is there some compilator's flag or something other, that will warn me about possibility of implicit panicking (unconditional bounds checking, using of "expect" or "unwrap" with Option/Result and other similar situations)?