1use std::ops::Deref;
2
3use salsa::Update;
4use serde::Serialize;
5
6use crate::span::Span;
7
8#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Update, Debug, Serialize)]
9pub struct SpanVec<'db, T: Update> {
10 pub span: Span<'db>,
12 pub values: Vec<T>,
13}
14
15impl<T: Update> Deref for SpanVec<'_, T> {
16 type Target = Vec<T>;
17
18 fn deref(&self) -> &Self::Target {
19 &self.values
20 }
21}
22
23impl<'db, T> IntoIterator for &'db SpanVec<'db, T>
24where
25 T: Update,
26{
27 type Item = &'db T;
28
29 type IntoIter = std::slice::Iter<'db, T>;
30
31 fn into_iter(self) -> Self::IntoIter {
32 self.values.iter()
33 }
34}