mirror of
https://github.com/rust-lang/rust.git
synced 2026-06-01 22:18:23 +03:00
36 lines
870 B
Rust
36 lines
870 B
Rust
use crate::borrow::Cow;
|
|
use core::iter::FromIterator;
|
|
|
|
use super::Vec;
|
|
|
|
#[stable(feature = "cow_from_vec", since = "1.8.0")]
|
|
impl<'a, T: Clone> From<&'a [T]> for Cow<'a, [T]> {
|
|
fn from(s: &'a [T]) -> Cow<'a, [T]> {
|
|
Cow::Borrowed(s)
|
|
}
|
|
}
|
|
|
|
#[stable(feature = "cow_from_vec", since = "1.8.0")]
|
|
impl<'a, T: Clone> From<Vec<T>> for Cow<'a, [T]> {
|
|
fn from(v: Vec<T>) -> Cow<'a, [T]> {
|
|
Cow::Owned(v)
|
|
}
|
|
}
|
|
|
|
#[stable(feature = "cow_from_vec_ref", since = "1.28.0")]
|
|
impl<'a, T: Clone> From<&'a Vec<T>> for Cow<'a, [T]> {
|
|
fn from(v: &'a Vec<T>) -> Cow<'a, [T]> {
|
|
Cow::Borrowed(v.as_slice())
|
|
}
|
|
}
|
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
impl<'a, T> FromIterator<T> for Cow<'a, [T]>
|
|
where
|
|
T: Clone,
|
|
{
|
|
fn from_iter<I: IntoIterator<Item = T>>(it: I) -> Cow<'a, [T]> {
|
|
Cow::Owned(FromIterator::from_iter(it))
|
|
}
|
|
}
|