aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/program/string_vec.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_core/src/program/string_vec.rs')
-rw-r--r--mingling_core/src/program/string_vec.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/mingling_core/src/program/string_vec.rs b/mingling_core/src/program/string_vec.rs
new file mode 100644
index 0000000..478ad74
--- /dev/null
+++ b/mingling_core/src/program/string_vec.rs
@@ -0,0 +1,56 @@
+#[derive(Debug, Clone)]
+pub struct StringVec {
+ vec: Vec<String>,
+}
+
+impl std::ops::Deref for StringVec {
+ type Target = Vec<String>;
+
+ fn deref(&self) -> &Self::Target {
+ &self.vec
+ }
+}
+
+impl From<StringVec> for Vec<String> {
+ fn from(val: StringVec) -> Self {
+ val.vec
+ }
+}
+
+impl<const N: usize> 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<Vec<String>> for StringVec {
+ fn from(vec: Vec<String>) -> Self {
+ StringVec { vec }
+ }
+}
+
+impl From<&[String]> for StringVec {
+ fn from(slice: &[String]) -> Self {
+ StringVec {
+ vec: slice.to_vec(),
+ }
+ }
+}
+
+impl From<Vec<&str>> for StringVec {
+ fn from(vec: Vec<&str>) -> Self {
+ StringVec {
+ vec: vec.iter().map(|&s| s.to_string()).collect(),
+ }
+ }
+}