@@ -136,7 +136,7 @@ impl private::NewTypeMarker for crate::PopulationId {}
136
136
#[ cfg_attr( doc_cfg, doc( cfg( feature = "provenance" ) ) ) ]
137
137
impl private:: NewTypeMarker for crate :: ProvenanceId { }
138
138
139
- pub trait TableColumn < I , T > :
139
+ pub trait TableColumn < I , T : Copy > :
140
140
std:: ops:: Index < I , Output = T >
141
141
+ std:: ops:: Index < usize , Output = T >
142
142
+ std:: ops:: Index < crate :: SizeType , Output = T >
@@ -146,6 +146,7 @@ pub trait TableColumn<I, T>:
146
146
fn get ( & self , at : usize ) -> Option < & T > ;
147
147
fn get_with_id ( & self , at : I ) -> Option < & T > ;
148
148
fn get_with_size_type ( & self , at : crate :: SizeType ) -> Option < & T > ;
149
+ fn iter ( & self ) -> impl Iterator < Item = T > + ' _ ;
149
150
}
150
151
151
152
impl < T > private:: TableColumnMarker for crate :: table_column:: OpaqueTableColumn < ' _ , T > { }
@@ -163,6 +164,7 @@ where
163
164
impl < I , T > TableColumn < I , T > for crate :: table_column:: OpaqueTableColumn < ' _ , T >
164
165
where
165
166
I : private:: NewTypeMarker ,
167
+ T : Copy ,
166
168
{
167
169
fn as_slice ( & self ) -> & [ T ] {
168
170
self . 0
@@ -179,4 +181,8 @@ where
179
181
fn get_with_size_type ( & self , at : crate :: SizeType ) -> Option < & T > {
180
182
self . 0 . get ( usize:: try_from ( at) . unwrap ( ) )
181
183
}
184
+
185
+ fn iter ( & self ) -> impl Iterator < Item = T > + ' _ {
186
+ self . 0 . iter ( ) . cloned ( )
187
+ }
182
188
}
0 commit comments