whisky_js/models/
js_vec.rs1use crate::*;
2use serde::{Deserialize, Serialize};
3
4#[wasm_bindgen]
5#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd, Default, Serialize, Deserialize)]
6pub struct JsVecString(Vec<String>);
7
8#[wasm_bindgen]
9impl JsVecString {
10 pub fn new() -> Self {
11 Self(Vec::new())
12 }
13
14 pub fn len(&self) -> usize {
15 self.0.len()
16 }
17
18 pub fn is_empty(&self) -> bool {
19 self.len() == 0
20 }
21
22 pub fn get(&self, index: usize) -> String {
23 self.0[index].clone()
24 }
25
26 pub fn add(&mut self, elem: String) {
27 self.0.push(elem.clone());
28 }
29
30 pub fn into_vec(self) -> Vec<String> {
31 self.0
32 }
33
34 pub(crate) fn as_ref_vec(&self) -> &Vec<String> {
35 &self.0
36 }
37}
38
39impl IntoIterator for JsVecString {
40 type Item = String;
41 type IntoIter = std::vec::IntoIter<String>;
42
43 fn into_iter(self) -> Self::IntoIter {
44 self.0.into_iter()
45 }
46}
47
48impl<'a> IntoIterator for &'a JsVecString {
49 type Item = &'a String;
50 type IntoIter = std::slice::Iter<'a, String>;
51
52 fn into_iter(self) -> Self::IntoIter {
53 self.0.iter()
54 }
55}
56
57impl JsVecString {
58 pub fn iter(&self) -> std::slice::Iter<String> {
59 self.0.iter()
60 }
61}