#![feature(crate_visibility_modifier)]
#![feature(associated_type_bounds)]
#![feature(rustc_attrs)]
-#![feature(int_error_matching)]
#![feature(half_open_range_patterns)]
#![feature(exclusive_range_pattern)]
#![feature(control_flow_enum)]
#![feature(slice_ptr_get)]
#![feature(no_niche)] // rust-lang/rust#68303
#![feature(no_coverage)] // rust-lang/rust#84605
-#![feature(int_error_matching)]
#![cfg_attr(bootstrap, feature(target_feature_11))]
#![deny(unsafe_op_in_unsafe_fn)]
#![deny(or_patterns_back_compat)]
/// # Example
///
/// ```
-/// #![feature(int_error_matching)]
-///
/// # fn main() {
/// if let Err(e) = i32::from_str_radix("a12", 10) {
/// println!("Failed conversion to i32: {:?}", e.kind());
/// }
/// # }
/// ```
-#[unstable(
- feature = "int_error_matching",
- reason = "it can be useful to match errors when making error messages \
- for integer parsing",
- issue = "22639"
-)]
+#[stable(feature = "int_error_matching", since = "1.54.0")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum IntErrorKind {
/// Value being parsed is empty.
///
- /// Among other causes, this variant will be constructed when parsing an empty string.
+ /// This variant will be constructed when parsing an empty string.
+ #[stable(feature = "int_error_matching", since = "1.54.0")]
Empty,
/// Contains an invalid digit in its context.
///
///
/// This variant is also constructed when a `+` or `-` is misplaced within a string
/// either on its own or in the middle of a number.
+ #[stable(feature = "int_error_matching", since = "1.54.0")]
InvalidDigit,
/// Integer is too large to store in target integer type.
+ #[stable(feature = "int_error_matching", since = "1.54.0")]
PosOverflow,
/// Integer is too small to store in target integer type.
+ #[stable(feature = "int_error_matching", since = "1.54.0")]
NegOverflow,
/// Value was Zero
///
/// This variant will be emitted when the parsing string has a value of zero, which
/// would be illegal for non-zero types.
+ #[stable(feature = "int_error_matching", since = "1.54.0")]
Zero,
}
impl ParseIntError {
/// Outputs the detailed cause of parsing an integer failing.
- #[unstable(
- feature = "int_error_matching",
- reason = "it can be useful to match errors when making error messages \
- for integer parsing",
- issue = "22639"
- )]
+ #[stable(feature = "int_error_matching", since = "1.54.0")]
pub fn kind(&self) -> &IntErrorKind {
&self.kind
}
#[stable(feature = "try_from", since = "1.34.0")]
pub use error::TryFromIntError;
-#[unstable(
- feature = "int_error_matching",
- reason = "it can be useful to match errors when making error messages \
- for integer parsing",
- issue = "22639"
-)]
+#[stable(feature = "int_error_matching", since = "1.54.0")]
pub use error::IntErrorKind;
macro_rules! usize_isize_to_xe_bytes_doc {
#![feature(try_trait_v2)]
#![feature(slice_internals)]
#![feature(slice_partition_dedup)]
-#![feature(int_error_matching)]
#![feature(iter_advance_by)]
#![feature(iter_partition_in_place)]
#![feature(iter_intersperse)]
#![feature(global_asm)]
#![feature(hashmap_internals)]
#![feature(int_error_internals)]
-#![feature(int_error_matching)]
#![feature(integer_atomics)]
#![feature(into_future)]
#![feature(intra_doc_pointers)]
#[stable(feature = "nonzero", since = "1.28.0")]
pub use core::num::{NonZeroU128, NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize};
-#[unstable(
- feature = "int_error_matching",
- reason = "it can be useful to match errors when making error messages \
- for integer parsing",
- issue = "22639"
-)]
+ #[stable(feature = "int_error_matching", since = "1.54.0")]
pub use core::num::IntErrorKind;
#[cfg(test)]