param_opt/parameter/dataset/
strings.rs1use std::num::NonZeroUsize;
2
3use serde::Deserialize;
4
5use super::{Parameter, ParameterSpace};
6
7#[derive(Debug, Clone, PartialEq, Deserialize)]
8pub struct Strings {
9 values: Vec<String>,
10}
11
12impl Strings {
13 pub fn new(values: Vec<String>) -> Option<Self> {
15 if values.is_empty() {
16 return None;
17 }
18 Some(Self { values })
19 }
20}
21
22impl ParameterSpace for Strings {
23 fn space_size(&self) -> std::num::NonZeroUsize {
24 NonZeroUsize::new(self.values.len()).expect("No values")
25 }
26}
27
28impl Parameter for Strings {
29 type Value = String;
30
31 fn value(&self, index: usize) -> &Self::Value {
32 &self.values[index]
33 }
34}