runmat_package/source/
acquisition.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(rename_all = "kebab-case")]
5pub enum SourceAcquisitionIntent {
6 Execute,
7 Fetch,
8 Update,
9}
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
12#[serde(default, deny_unknown_fields)]
13pub struct SourceAcquisitionPolicy {
14 pub locked: bool,
15 pub frozen: bool,
16 pub offline: bool,
17}
18
19#[cfg(test)]
20mod tests {
21 use super::SourceAcquisitionPolicy;
22
23 #[test]
24 fn omitted_wire_policy_fields_use_the_portable_defaults() {
25 let policy: SourceAcquisitionPolicy = serde_json::from_str("{}").unwrap();
26 assert_eq!(policy, SourceAcquisitionPolicy::default());
27 assert!(serde_json::from_str::<SourceAcquisitionPolicy>(
28 r#"{"locked":false,"unexpected":true}"#
29 )
30 .is_err());
31 }
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
35#[serde(rename_all = "kebab-case")]
36pub enum SourceLockAction {
37 Preserve,
38 Write,
39 Replace,
40}