mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-30 23:03:06 +03:00
Implement From<[T; N]> for Rc<[T]> and Arc<[T]>
This commit is contained in:
@@ -2406,6 +2406,27 @@ fn from(t: T) -> Self {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[stable(feature = "shared_from_array", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T, const N: usize> From<[T; N]> for Rc<[T]> {
|
||||
/// Converts a [`[T; N]`](prim@array) into an `Rc<[T]>`.
|
||||
///
|
||||
/// The conversion moves the array into a newly allocated `Rc`.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::rc::Rc;
|
||||
/// let original: [i32; 3] = [1, 2, 3];
|
||||
/// let shared: Rc<[i32]> = Rc::from(original);
|
||||
/// assert_eq!(&[1, 2, 3], &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: [T; N]) -> Rc<[T]> {
|
||||
Rc::<[T; N]>::from(v)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T: Clone> From<&[T]> for Rc<[T]> {
|
||||
|
||||
@@ -3269,6 +3269,27 @@ fn from(t: T) -> Self {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[stable(feature = "shared_from_array", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T, const N: usize> From<[T; N]> for Arc<[T]> {
|
||||
/// Converts a [`[T; N]`](prim@array) into an `Arc<[T]>`.
|
||||
///
|
||||
/// The conversion moves the array into a newly allocated `Arc`.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::sync::Arc;
|
||||
/// let original: [i32; 3] = [1, 2, 3];
|
||||
/// let shared: Arc<[i32]> = Arc::from(original);
|
||||
/// assert_eq!(&[1, 2, 3], &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: [T; N]) -> Arc<[T]> {
|
||||
Arc::<[T; N]>::from(v)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T: Clone> From<&[T]> for Arc<[T]> {
|
||||
|
||||
Reference in New Issue
Block a user