agent_context/
readonly.rs1#[derive(Debug, Clone)]
6pub struct ReadOnly<T>(Vec<T>);
7
8impl<T> ReadOnly<T> {
9 pub fn from(vec: Vec<T>) -> Self {
11 Self(vec)
12 }
13}
14
15impl<T> std::ops::Deref for ReadOnly<T> {
16 type Target = [T];
17 fn deref(&self) -> &Self::Target {
18 &self.0
19 }
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25
26 #[test]
27 fn deref_access() {
28 let ro = ReadOnly::from(vec![1, 2, 3]);
29 assert_eq!(ro[0], 1);
30 assert_eq!(ro.len(), 3);
31 }
32
33 #[test]
34 fn from_and_iter() {
35 let ro = ReadOnly::from(vec!["a", "b"]);
36 let collected: Vec<_> = ro.iter().collect();
37 assert_eq!(collected, vec![&"a", &"b"]);
38 }
39
40 #[test]
41 fn clone() {
42 let ro = ReadOnly::from(vec![1, 2]);
43 let cloned = ro.clone();
44 assert_eq!(cloned[0], 1);
45 }
46}