pub mod always;
pub mod closure;
pub mod merge;
pub mod resolver;
pub use always::Always;
pub use merge::Merge;
pub(crate) const ALWAYS_SENTINEL: &str = "$$veer_always$$";
pub(crate) const MERGE_SENTINEL: &str = "$$veer_merge$$";
#[cfg(test)]
mod tests {
use super::*;
use serde::Serialize;
use serde_json::json;
#[derive(Serialize)]
struct Page {
users: Vec<&'static str>,
cached: Always<i64>,
notifs: Merge<Vec<&'static str>>,
}
#[test]
fn wrappers_serialize_as_sentinels_under_plain_serde() {
let p = Page {
users: vec!["a", "b"],
cached: Always(42),
notifs: Merge(vec!["x"]),
};
assert_eq!(
serde_json::to_value(&p).unwrap(),
json!({
"users": ["a", "b"],
"cached": {ALWAYS_SENTINEL: 42},
"notifs": {MERGE_SENTINEL: ["x"]},
})
);
}
}