@@ -206,10 +206,6 @@ pub struct Printer {
206206 margin : isize ,
207207 /// Number of spaces left on line
208208 space : isize ,
209- /// Index of left side of input stream
210- left : usize ,
211- /// Index of right side of input stream
212- right : usize ,
213209 /// Ring-buffer of tokens and calculated sizes
214210 buf : RingBuffer < BufEntry > ,
215211 /// Running size of stream "...left"
@@ -245,8 +241,6 @@ impl Printer {
245241 out : String :: new ( ) ,
246242 margin : linewidth as isize ,
247243 space : linewidth as isize ,
248- left : 0 ,
249- right : 0 ,
250244 buf : RingBuffer :: new ( ) ,
251245 left_total : 0 ,
252246 right_total : 0 ,
@@ -281,45 +275,38 @@ impl Printer {
281275 if self . scan_stack . is_empty ( ) {
282276 self . left_total = 1 ;
283277 self . right_total = 1 ;
284- self . right = self . left ;
285278 self . buf . clear ( ) ;
286- } else {
287- self . right += 1 ;
288279 }
289- self . buf . push ( BufEntry { token : Token :: Begin ( b) , size : -self . right_total } ) ;
290- self . scan_stack . push_front ( self . right ) ;
280+ let right = self . buf . push ( BufEntry { token : Token :: Begin ( b) , size : -self . right_total } ) ;
281+ self . scan_stack . push_front ( right) ;
291282 }
292283
293284 fn scan_end ( & mut self ) {
294285 if self . scan_stack . is_empty ( ) {
295286 self . print_end ( ) ;
296287 } else {
297- self . right += 1 ;
298- self . buf . push ( BufEntry { token : Token :: End , size : -1 } ) ;
299- self . scan_stack . push_front ( self . right ) ;
288+ let right = self . buf . push ( BufEntry { token : Token :: End , size : -1 } ) ;
289+ self . scan_stack . push_front ( right) ;
300290 }
301291 }
302292
303293 fn scan_break ( & mut self , b : BreakToken ) {
304294 if self . scan_stack . is_empty ( ) {
305295 self . left_total = 1 ;
306296 self . right_total = 1 ;
307- self . right = self . left ;
308297 self . buf . clear ( ) ;
309298 } else {
310299 self . check_stack ( 0 ) ;
311- self . right += 1 ;
312300 }
313- self . buf . push ( BufEntry { token : Token :: Break ( b) , size : -self . right_total } ) ;
314- self . scan_stack . push_front ( self . right ) ;
301+ let right = self . buf . push ( BufEntry { token : Token :: Break ( b) , size : -self . right_total } ) ;
302+ self . scan_stack . push_front ( right) ;
315303 self . right_total += b. blank_space ;
316304 }
317305
318306 fn scan_string ( & mut self , s : Cow < ' static , str > ) {
319307 if self . scan_stack . is_empty ( ) {
320308 self . print_string ( & s) ;
321309 } else {
322- self . right += 1 ;
323310 let len = s. len ( ) as isize ;
324311 self . buf . push ( BufEntry { token : Token :: String ( s) , size : len } ) ;
325312 self . right_total += len;
@@ -329,22 +316,22 @@ impl Printer {
329316
330317 fn check_stream ( & mut self ) {
331318 while self . right_total - self . left_total > self . space {
332- if self . scan_stack . back ( ) == Some ( & self . left ) {
319+ if * self . scan_stack . back ( ) . unwrap ( ) == self . buf . index_of_first ( ) {
333320 self . scan_stack . pop_back ( ) . unwrap ( ) ;
334- self . buf [ self . left ] . size = SIZE_INFINITY ;
321+ self . buf . first_mut ( ) . unwrap ( ) . size = SIZE_INFINITY ;
335322 }
336323 self . advance_left ( ) ;
337- if self . left == self . right {
324+ if self . buf . is_empty ( ) {
338325 break ;
339326 }
340327 }
341328 }
342329
343330 fn advance_left ( & mut self ) {
344- let mut left_size = self . buf [ self . left ] . size ;
331+ let mut left_size = self . buf . first ( ) . unwrap ( ) . size ;
345332
346333 while left_size >= 0 {
347- let left = self . buf [ self . left ] . token . clone ( ) ;
334+ let left = self . buf . first ( ) . unwrap ( ) . token . clone ( ) ;
348335
349336 let len = match left {
350337 Token :: Break ( b) => b. blank_space ,
@@ -360,14 +347,12 @@ impl Printer {
360347
361348 self . left_total += len;
362349
363- if self . left == self . right {
350+ self . buf . advance_left ( ) ;
351+ if self . buf . is_empty ( ) {
364352 break ;
365353 }
366354
367- self . buf . advance_left ( ) ;
368- self . left += 1 ;
369-
370- left_size = self . buf [ self . left ] . size ;
355+ left_size = self . buf . first ( ) . unwrap ( ) . size ;
371356 }
372357 }
373358
0 commit comments