Skip to content

Commit ab03f3c

Browse files
committed
iter
1 parent d5562e2 commit ab03f3c

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/traits.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ impl private::NewTypeMarker for crate::PopulationId {}
136136
#[cfg_attr(doc_cfg, doc(cfg(feature = "provenance")))]
137137
impl private::NewTypeMarker for crate::ProvenanceId {}
138138

139-
pub trait TableColumn<I, T>:
139+
pub trait TableColumn<I, T: Copy>:
140140
std::ops::Index<I, Output = T>
141141
+ std::ops::Index<usize, Output = T>
142142
+ std::ops::Index<crate::SizeType, Output = T>
@@ -146,6 +146,7 @@ pub trait TableColumn<I, T>:
146146
fn get(&self, at: usize) -> Option<&T>;
147147
fn get_with_id(&self, at: I) -> Option<&T>;
148148
fn get_with_size_type(&self, at: crate::SizeType) -> Option<&T>;
149+
fn iter(&self) -> impl Iterator<Item = T> + '_;
149150
}
150151

151152
impl<T> private::TableColumnMarker for crate::table_column::OpaqueTableColumn<'_, T> {}
@@ -163,6 +164,7 @@ where
163164
impl<I, T> TableColumn<I, T> for crate::table_column::OpaqueTableColumn<'_, T>
164165
where
165166
I: private::NewTypeMarker,
167+
T: Copy,
166168
{
167169
fn as_slice(&self) -> &[T] {
168170
self.0
@@ -179,4 +181,8 @@ where
179181
fn get_with_size_type(&self, at: crate::SizeType) -> Option<&T> {
180182
self.0.get(usize::try_from(at).unwrap())
181183
}
184+
185+
fn iter(&self) -> impl Iterator<Item = T> + '_ {
186+
self.0.iter().cloned()
187+
}
182188
}

0 commit comments

Comments
 (0)