//! |---------------------------------------------------------------------|----------------------------------------------------------------------------|
//! | `#[repr(transparent)]` struct around one of the types in this list. | when it holds for the inner type |
//! [^extern_fn]: this remains true for `unsafe` variants, any argument/return types, and any other ABI: `[unsafe] extern "abi" fn` (_e.g._, `extern "system" fn`)
//! Under some conditions the above types `T` are also null pointer optimized when wrapped in a [`Result`][result_repr].
//! If this is [`None`] then a default result is returned instead without executing the function.
//! * [`as_mut`] converts from <code>[&mut] [Option]\<T></code> to <code>[Option]<[&mut] T></code>
//! [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
pub const fn is_some_and(self, f: impl [const] FnOnce(T) -> bool + [const] Destruct) -> bool {
pub const fn is_none_or(self, f: impl [const] FnOnce(T) -> bool + [const] Destruct) -> bool {
/// Calculates the length of an <code>Option<[String]></code> as an <code>Option<[usize]></code>
/// Converts from <code>[Pin]<[&mut] Option\<T>></code> to <code>Option<[Pin]<[&mut] T>></code>.
/// Styles"](../../std/error/index.html#common-message-styles) in the [`std::error`](../../std/error/index.html) module docs.
/// [try-option]: https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html#where-the--operator-can-be-used
/// [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
/// Maps an `Option<T>` to `Option<U>` by applying a function to a contained value (if `Some`) or returns `None` (if `None`).
/// Leaves the original `Option` in-place, creating a new one containing a mutable reference to
//FIXME(const_hack): this `T: ~const Destruct` is unnecessary, but even precise live drops can't tell
// FIXME(const-hack): this implementation, which sidesteps using `Option::map` since it's not const
// FIXME(const_hack): the T: ~const Destruct should be inferred from the Self: ~const Destruct in clone_from.
/// Converts an <code>[Option]<[String]></code> into an <code>[Option]<[usize]></code>, preserving
/// the original. The [`map`] method takes the `self` argument by value, consuming the original,