Rollup merge of #83456 - notriddle:vec-from-docs, r=JohnTitor
Add docs for Vec::from functions Part of #51430
This commit is contained in:
commit
827d1ea590
@ -2712,6 +2712,13 @@ impl<T, A: Allocator> AsMut<[T]> for Vec<T, A> {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Clone> From<&[T]> for Vec<T> {
|
||||
/// Allocate a `Vec<T>` and fill it by cloning `s`'s items.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
|
||||
/// ```
|
||||
#[cfg(not(test))]
|
||||
fn from(s: &[T]) -> Vec<T> {
|
||||
s.to_vec()
|
||||
@ -2724,6 +2731,13 @@ impl<T: Clone> From<&[T]> for Vec<T> {
|
||||
|
||||
#[stable(feature = "vec_from_mut", since = "1.19.0")]
|
||||
impl<T: Clone> From<&mut [T]> for Vec<T> {
|
||||
/// Allocate a `Vec<T>` and fill it by cloning `s`'s items.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
|
||||
/// ```
|
||||
#[cfg(not(test))]
|
||||
fn from(s: &mut [T]) -> Vec<T> {
|
||||
s.to_vec()
|
||||
@ -2740,6 +2754,13 @@ impl<T, const N: usize> From<[T; N]> for Vec<T> {
|
||||
fn from(s: [T; N]) -> Vec<T> {
|
||||
<[T]>::into_vec(box s)
|
||||
}
|
||||
/// Allocate a `Vec<T>` and move `s`'s items into it.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
|
||||
/// ```
|
||||
#[cfg(test)]
|
||||
fn from(s: [T; N]) -> Vec<T> {
|
||||
crate::slice::into_vec(box s)
|
||||
@ -2751,6 +2772,20 @@ impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
|
||||
where
|
||||
[T]: ToOwned<Owned = Vec<T>>,
|
||||
{
|
||||
/// Convert a clone-on-write slice into a vector.
|
||||
///
|
||||
/// If `s` already owns a `Vec<T>`, it will be returned directly.
|
||||
/// If `s` is borrowing a slice, a new `Vec<T>` will be allocated and
|
||||
/// filled by cloning `s`'s items into it.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// # use std::borrow::Cow;
|
||||
/// let o: Cow<[i32]> = Cow::Owned(vec![1, 2, 3]);
|
||||
/// let b: Cow<[i32]> = Cow::Borrowed(&[1, 2, 3]);
|
||||
/// assert_eq!(Vec::from(o), Vec::from(b));
|
||||
/// ```
|
||||
fn from(s: Cow<'a, [T]>) -> Vec<T> {
|
||||
s.into_owned()
|
||||
}
|
||||
@ -2760,6 +2795,15 @@ where
|
||||
#[cfg(not(test))]
|
||||
#[stable(feature = "vec_from_box", since = "1.18.0")]
|
||||
impl<T, A: Allocator> From<Box<[T], A>> for Vec<T, A> {
|
||||
/// Convert a boxed slice into a vector by transferring ownership of
|
||||
/// the existing heap allocation.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();
|
||||
/// assert_eq!(Vec::from(b), vec![1, 2, 3]);
|
||||
/// ```
|
||||
fn from(s: Box<[T], A>) -> Self {
|
||||
let len = s.len();
|
||||
Self { buf: RawVec::from_box(s), len }
|
||||
@ -2770,6 +2814,16 @@ impl<T, A: Allocator> From<Box<[T], A>> for Vec<T, A> {
|
||||
#[cfg(not(test))]
|
||||
#[stable(feature = "box_from_vec", since = "1.20.0")]
|
||||
impl<T, A: Allocator> From<Vec<T, A>> for Box<[T], A> {
|
||||
/// Convert a vector into a boxed slice.
|
||||
///
|
||||
/// If `v` has excess capacity, its items will be moved into a
|
||||
/// newly-allocated buffer with exactly the right capacity.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// assert_eq!(Box::from(vec![1, 2, 3]), vec![1, 2, 3].into_boxed_slice());
|
||||
/// ```
|
||||
fn from(v: Vec<T, A>) -> Self {
|
||||
v.into_boxed_slice()
|
||||
}
|
||||
@ -2777,6 +2831,13 @@ impl<T, A: Allocator> From<Vec<T, A>> for Box<[T], A> {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl From<&str> for Vec<u8> {
|
||||
/// Allocate a `Vec<u8>` and fill it with a UTF-8 string.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// assert_eq!(Vec::from("123"), vec![b'1', b'2', b'3']);
|
||||
/// ```
|
||||
fn from(s: &str) -> Vec<u8> {
|
||||
From::from(s.as_bytes())
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user