@@ -136,7 +136,7 @@ impl private::NewTypeMarker for crate::PopulationId {}
136136#[ cfg_attr( doc_cfg, doc( cfg( feature = "provenance" ) ) ) ]
137137impl 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
151152impl < T > private:: TableColumnMarker for crate :: table_column:: OpaqueTableColumn < ' _ , T > { }
@@ -163,6 +164,7 @@ where
163164impl < I , T > TableColumn < I , T > for crate :: table_column:: OpaqueTableColumn < ' _ , T >
164165where
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