@@ -10,10 +10,13 @@ impl<T> std::ops::Index<usize> for OpaqueTableColumn<'_, T> {
1010 }
1111}
1212
13- trait NewTypeMarker : TryInto < usize , Error = crate :: TskitError > { }
13+ mod private {
14+ pub trait NewTypeMarker : TryInto < usize , Error = crate :: TskitError > { }
15+ pub trait TableColumnMarker { }
16+ }
1417
15- impl NewTypeMarker for crate :: EdgeId { }
16- impl NewTypeMarker for crate :: NodeId { }
18+ impl private :: NewTypeMarker for crate :: EdgeId { }
19+ impl private :: NewTypeMarker for crate :: NodeId { }
1720
1821impl < T > std:: ops:: Index < crate :: SizeType > for OpaqueTableColumn < ' _ , T > {
1922 type Output = T ;
@@ -25,7 +28,7 @@ impl<T> std::ops::Index<crate::SizeType> for OpaqueTableColumn<'_, T> {
2528
2629impl < I , T > std:: ops:: Index < I > for OpaqueTableColumn < ' _ , T >
2730where
28- I : NewTypeMarker ,
31+ I : private :: NewTypeMarker ,
2932{
3033 type Output = T ;
3134 fn index ( & self , index : I ) -> & Self :: Output {
@@ -37,16 +40,19 @@ pub trait TableColumn<I, T>:
3740 std:: ops:: Index < I , Output = T >
3841 + std:: ops:: Index < usize , Output = T >
3942 + std:: ops:: Index < crate :: SizeType , Output = T >
43+ + private:: TableColumnMarker
4044{
4145 fn as_slice ( & self ) -> & [ T ] ;
4246 fn get ( & self , at : usize ) -> Option < & T > ;
4347 fn get_with_id ( & self , at : I ) -> Option < & T > ;
4448 fn get_with_size_type ( & self , at : crate :: SizeType ) -> Option < & T > ;
4549}
4650
51+ impl < T > private:: TableColumnMarker for OpaqueTableColumn < ' _ , T > { }
52+
4753impl < I , T > TableColumn < I , T > for OpaqueTableColumn < ' _ , T >
4854where
49- I : NewTypeMarker ,
55+ I : private :: NewTypeMarker ,
5056{
5157 fn as_slice ( & self ) -> & [ T ] {
5258 self . 0
0 commit comments