1 use crate::borrow::Cow;
2 use core::iter::FromIterator;
6 #[stable(feature = "cow_from_vec", since = "1.8.0")]
7 impl<'a, T: Clone> From<&'a [T]> for Cow<'a, [T]> {
8 /// Creates a [`Borrowed`] variant of [`Cow`]
11 /// This conversion does not allocate or clone the data.
13 /// [`Borrowed`]: crate::borrow::Cow::Borrowed
14 fn from(s: &'a [T]) -> Cow<'a, [T]> {
19 #[stable(feature = "cow_from_vec", since = "1.8.0")]
20 impl<'a, T: Clone> From<Vec<T>> for Cow<'a, [T]> {
21 /// Creates an [`Owned`] variant of [`Cow`]
22 /// from an owned instance of [`Vec`].
24 /// This conversion does not allocate or clone the data.
26 /// [`Owned`]: crate::borrow::Cow::Owned
27 fn from(v: Vec<T>) -> Cow<'a, [T]> {
32 #[stable(feature = "cow_from_vec_ref", since = "1.28.0")]
33 impl<'a, T: Clone> From<&'a Vec<T>> for Cow<'a, [T]> {
34 /// Creates a [`Borrowed`] variant of [`Cow`]
35 /// from a reference to [`Vec`].
37 /// This conversion does not allocate or clone the data.
39 /// [`Borrowed`]: crate::borrow::Cow::Borrowed
40 fn from(v: &'a Vec<T>) -> Cow<'a, [T]> {
41 Cow::Borrowed(v.as_slice())
45 #[stable(feature = "rust1", since = "1.0.0")]
46 impl<'a, T> FromIterator<T> for Cow<'a, [T]>
50 fn from_iter<I: IntoIterator<Item = T>>(it: I) -> Cow<'a, [T]> {
51 Cow::Owned(FromIterator::from_iter(it))