use serde::{Deserialize, Serialize};
fn default_max_value_bytes() -> usize {
65536
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default)]
pub struct CrossThreadStoreConfig {
pub enabled: bool,
#[serde(default = "default_max_value_bytes")]
pub max_value_bytes: usize,
#[serde(default)]
pub search_provider: Option<String>,
}
impl Default for CrossThreadStoreConfig {
fn default() -> Self {
Self {
enabled: false,
max_value_bytes: default_max_value_bytes(),
search_provider: None,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn defaults_match_spec() {
let cfg = CrossThreadStoreConfig::default();
assert!(!cfg.enabled);
assert_eq!(cfg.max_value_bytes, 65536);
assert!(cfg.search_provider.is_none());
}
#[test]
fn deserializes_from_empty_table() {
let cfg: CrossThreadStoreConfig = toml::from_str("").unwrap();
assert!(!cfg.enabled);
assert_eq!(cfg.max_value_bytes, 65536);
}
#[test]
fn deserializes_explicit_values() {
let cfg: CrossThreadStoreConfig =
toml::from_str("enabled = true\nmax_value_bytes = 1024\n").unwrap();
assert!(cfg.enabled);
assert_eq!(cfg.max_value_bytes, 1024);
}
}