2525// Last updated: 2024-05-15
2626//
2727
28- use crate :: datatype:: DataType ;
29- use padder:: { Alignment , Symbol } ;
3028use std:: cmp:: min;
3129
30+ use padder:: { Alignment , Symbol } ;
31+
32+ use crate :: datatype:: DataType ;
33+
3234pub ( crate ) trait ColumnTrimmer {
3335 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) ;
3436 // TODO @Willhelm perhaps add trim function here ?
3537}
3638
39+
40+
3741pub ( crate ) fn count_rune_bytelength ( data : & [ u8 ] , runes : i16 ) -> usize {
3842 let mut eat = data. iter ( ) ;
3943 let mut counted_runes = 0 ;
@@ -71,6 +75,7 @@ pub(crate) fn count_rune_bytelength(data: &[u8], runes: i16) -> usize {
7175}
7276
7377pub ( crate ) struct UtfNotAligned { }
78+
7479impl ColumnTrimmer for UtfNotAligned {
7580 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) {
7681 ( 0 , count_rune_bytelength ( data, runes) - 1 )
@@ -80,6 +85,7 @@ impl ColumnTrimmer for UtfNotAligned {
8085pub ( crate ) struct FloatLeftAligned {
8186 trim_symbol : Symbol ,
8287}
88+
8389impl ColumnTrimmer for crate :: trimmer:: FloatLeftAligned {
8490 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) {
8591 let mut eat = data. iter ( ) ;
@@ -113,6 +119,7 @@ impl ColumnTrimmer for crate::trimmer::FloatLeftAligned {
113119pub ( crate ) struct FloatRightAligned {
114120 trim_symbol : Symbol ,
115121}
122+
116123impl ColumnTrimmer for FloatRightAligned {
117124 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) {
118125 let mut eat = data. iter ( ) ;
@@ -141,9 +148,11 @@ impl ColumnTrimmer for FloatRightAligned {
141148 ( start, stop)
142149 }
143150}
151+
144152pub ( crate ) struct CharLeftAligned {
145153 trim_symbol : Symbol ,
146154}
155+
147156impl ColumnTrimmer for crate :: trimmer:: CharLeftAligned {
148157 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) {
149158 let mut eat = data. iter ( ) ;
@@ -179,6 +188,7 @@ impl ColumnTrimmer for crate::trimmer::CharLeftAligned {
179188pub ( crate ) struct CharRightAligned {
180189 trim_symbol : Symbol ,
181190}
191+
182192impl ColumnTrimmer for CharRightAligned {
183193 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) {
184194 let mut eat = data. iter ( ) ;
@@ -211,6 +221,7 @@ impl ColumnTrimmer for CharRightAligned {
211221pub ( crate ) struct NumLeftAligned {
212222 trim_symbol : Symbol ,
213223}
224+
214225impl ColumnTrimmer for crate :: trimmer:: NumLeftAligned {
215226 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) {
216227 let mut eat = data. iter ( ) ;
@@ -243,6 +254,7 @@ impl ColumnTrimmer for crate::trimmer::NumLeftAligned {
243254pub ( crate ) struct NumRightAligned {
244255 trim_symbol : Symbol ,
245256}
257+
246258impl ColumnTrimmer for NumRightAligned {
247259 fn find_start_stop ( & self , data : & [ u8 ] , runes : i16 ) -> ( usize , usize ) {
248260 let mut eat = data. iter ( ) ;
@@ -276,7 +288,7 @@ pub(crate) fn trimmer_factory(
276288 dtype : DataType ,
277289 alignment : Alignment ,
278290 trim_symbol : Symbol ,
279- ) -> Box < dyn ColumnTrimmer > {
291+ ) -> Box < dyn ColumnTrimmer + Send + Sync > {
280292 match ( dtype, alignment) {
281293 ( DataType :: Boolean , padder:: Alignment :: Left ) => {
282294 Box :: new ( crate :: trimmer:: CharLeftAligned { trim_symbol } )
0 commit comments