Rollup merge of #82041 - notriddle:shared-from-slice-docs, r=m-ou-se
Add docs for shared_from_slice From impls The advantage of making these docs is mostly in pointing out that these functions all make new allocations and copy/clone/move the source into them. These docs are on the function, and not the `impl` block, to avoid showing the "[+] show undocumented items" button. CC #51430
This commit is contained in:
commit
2673026995
@ -1652,6 +1652,16 @@ fn from(t: T) -> Self {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T: Clone> From<&[T]> for Rc<[T]> {
|
||||
/// Allocate a reference-counted slice and fill it by cloning `v`'s items.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::rc::Rc;
|
||||
/// let original: &[i32] = &[1, 2, 3];
|
||||
/// let shared: Rc<[i32]> = Rc::from(original);
|
||||
/// assert_eq!(&[1, 2, 3], &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: &[T]) -> Rc<[T]> {
|
||||
<Self as RcFromSlice<T>>::from_slice(v)
|
||||
@ -1660,6 +1670,15 @@ fn from(v: &[T]) -> Rc<[T]> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl From<&str> for Rc<str> {
|
||||
/// Allocate a reference-counted string slice and copy `v` into it.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::rc::Rc;
|
||||
/// let shared: Rc<str> = Rc::from("statue");
|
||||
/// assert_eq!("statue", &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: &str) -> Rc<str> {
|
||||
let rc = Rc::<[u8]>::from(v.as_bytes());
|
||||
@ -1669,6 +1688,16 @@ fn from(v: &str) -> Rc<str> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl From<String> for Rc<str> {
|
||||
/// Allocate a reference-counted string slice and copy `v` into it.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::rc::Rc;
|
||||
/// let original: String = "statue".to_owned();
|
||||
/// let shared: Rc<str> = Rc::from(original);
|
||||
/// assert_eq!("statue", &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: String) -> Rc<str> {
|
||||
Rc::from(&v[..])
|
||||
@ -1677,6 +1706,16 @@ fn from(v: String) -> Rc<str> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T: ?Sized> From<Box<T>> for Rc<T> {
|
||||
/// Move a boxed object to a new, reference counted, allocation.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::rc::Rc;
|
||||
/// let original: Box<i32> = Box::new(1);
|
||||
/// let shared: Rc<i32> = Rc::from(original);
|
||||
/// assert_eq!(1, *shared);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: Box<T>) -> Rc<T> {
|
||||
Rc::from_box(v)
|
||||
@ -1685,6 +1724,16 @@ fn from(v: Box<T>) -> Rc<T> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T> From<Vec<T>> for Rc<[T]> {
|
||||
/// Allocate a reference-counted slice and move `v`'s items into it.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::rc::Rc;
|
||||
/// let original: Box<Vec<i32>> = Box::new(vec![1, 2, 3]);
|
||||
/// let shared: Rc<Vec<i32>> = Rc::from(original);
|
||||
/// assert_eq!(vec![1, 2, 3], *shared);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(mut v: Vec<T>) -> Rc<[T]> {
|
||||
unsafe {
|
||||
|
@ -2285,6 +2285,16 @@ fn from(t: T) -> Self {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T: Clone> From<&[T]> for Arc<[T]> {
|
||||
/// Allocate a reference-counted slice and fill it by cloning `v`'s items.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::sync::Arc;
|
||||
/// let original: &[i32] = &[1, 2, 3];
|
||||
/// let shared: Arc<[i32]> = Arc::from(original);
|
||||
/// assert_eq!(&[1, 2, 3], &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: &[T]) -> Arc<[T]> {
|
||||
<Self as ArcFromSlice<T>>::from_slice(v)
|
||||
@ -2293,6 +2303,15 @@ fn from(v: &[T]) -> Arc<[T]> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl From<&str> for Arc<str> {
|
||||
/// Allocate a reference-counted `str` and copy `v` into it.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::sync::Arc;
|
||||
/// let shared: Arc<str> = Arc::from("eggplant");
|
||||
/// assert_eq!("eggplant", &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: &str) -> Arc<str> {
|
||||
let arc = Arc::<[u8]>::from(v.as_bytes());
|
||||
@ -2302,6 +2321,16 @@ fn from(v: &str) -> Arc<str> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl From<String> for Arc<str> {
|
||||
/// Allocate a reference-counted `str` and copy `v` into it.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::sync::Arc;
|
||||
/// let unique: String = "eggplant".to_owned();
|
||||
/// let shared: Arc<str> = Arc::from(unique);
|
||||
/// assert_eq!("eggplant", &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: String) -> Arc<str> {
|
||||
Arc::from(&v[..])
|
||||
@ -2310,6 +2339,16 @@ fn from(v: String) -> Arc<str> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T: ?Sized> From<Box<T>> for Arc<T> {
|
||||
/// Move a boxed object to a new, reference-counted allocation.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::sync::Arc;
|
||||
/// let unique: Box<str> = Box::from("eggplant");
|
||||
/// let shared: Arc<str> = Arc::from(unique);
|
||||
/// assert_eq!("eggplant", &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(v: Box<T>) -> Arc<T> {
|
||||
Arc::from_box(v)
|
||||
@ -2318,6 +2357,16 @@ fn from(v: Box<T>) -> Arc<T> {
|
||||
|
||||
#[stable(feature = "shared_from_slice", since = "1.21.0")]
|
||||
impl<T> From<Vec<T>> for Arc<[T]> {
|
||||
/// Allocate a reference-counted slice and move `v`'s items into it.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use std::sync::Arc;
|
||||
/// let unique: Vec<i32> = vec![1, 2, 3];
|
||||
/// let shared: Arc<[i32]> = Arc::from(unique);
|
||||
/// assert_eq!(&[1, 2, 3], &shared[..]);
|
||||
/// ```
|
||||
#[inline]
|
||||
fn from(mut v: Vec<T>) -> Arc<[T]> {
|
||||
unsafe {
|
||||
|
Loading…
Reference in New Issue
Block a user