pub(crate) fn set_extension_once<T>( destination: &mut Option<T>, parser: impl Fn() -> Result<T, Error>, ) -> Result<(), Error>