diff --git a/library/core/src/option.rs b/library/core/src/option.rs index 1e3ed0f7c49f1..7c582e767832d 100644 --- a/library/core/src/option.rs +++ b/library/core/src/option.rs @@ -2096,6 +2096,23 @@ impl From for Option { } } +#[stable(feature = "option_slice_from_array_ref", since = "CURRENT_RUSTC_VERSION")] +impl<'a, T, const N: usize> From<&'a [T; N]> for Option<&'a [T]> { + /// Converts a reference to an array into a reference to an array slice. + /// + /// # Examples + /// + /// ``` + /// let array = [1, 2, 3]; + /// let option: Option<&[i32]> = Option::from(&array); + /// + /// assert_eq!(option, Some(&[1, 2, 3][..])); + /// ``` + fn from(slice: &'a [T; N]) -> Option<&'a [T]> { + Some(slice.as_slice()) + } +} + #[stable(feature = "option_ref_from_ref_option", since = "1.30.0")] impl<'a, T> From<&'a Option> for Option<&'a T> { /// Converts from `&Option` to `Option<&T>`.