#[derive(Debug, Clone)] #[doc(hidden)] pub struct StringVec { vec: Vec, } impl std::ops::Deref for StringVec { type Target = Vec; fn deref(&self) -> &Self::Target { &self.vec } } impl From for Vec { fn from(val: StringVec) -> Self { val.vec } } impl From<[&str; N]> for StringVec { fn from(slice: [&str; N]) -> Self { StringVec { vec: slice.iter().map(|&s| s.to_string()).collect(), } } } impl From<&[&str]> for StringVec { fn from(slice: &[&str]) -> Self { StringVec { vec: slice.iter().map(|&s| s.to_string()).collect(), } } } impl From> for StringVec { fn from(vec: Vec) -> Self { StringVec { vec } } } impl From<&[String]> for StringVec { fn from(slice: &[String]) -> Self { StringVec { vec: slice.to_vec(), } } } impl From> for StringVec { fn from(vec: Vec<&str>) -> Self { StringVec { vec: vec.iter().map(|&s| s.to_string()).collect(), } } }