@@ -2,32 +2,14 @@ use std::slice::{RSplit, Split};
22
33use crate :: LoadedLine ;
44
5- pub struct Chunk < ' a > {
6- file_offset : u64 ,
7- is_modified : bool ,
8- data : & ' a [ char ] ,
9- }
10-
11- impl Chunk < ' _ > {
12- pub fn from_disk ( file_offset : u64 , data : & [ char ] ) -> Chunk {
13- Chunk {
14- file_offset,
15- is_modified : false ,
16- data,
17- }
18- }
19-
20- pub fn lines_iter ( & self ) -> ChunkLinesIter {
21- ChunkLinesIter {
22- chunk : self ,
23- forward : self . data . split ( Box :: new ( |c : & char | * c == '\n' ) ) ,
24- back : self . data . rsplit ( Box :: new ( |c : & char | * c == '\n' ) ) ,
25- }
5+ pub fn lines_iter < ' a > ( data : & ' a [ char ] ) -> ChunkLinesIter {
6+ ChunkLinesIter {
7+ forward : data. split ( Box :: new ( |c : & char | * c == '\n' ) ) ,
8+ back : data. rsplit ( Box :: new ( |c : & char | * c == '\n' ) ) ,
269 }
2710}
2811
2912pub struct ChunkLinesIter < ' a > {
30- chunk : & ' a Chunk < ' a > ,
3113 forward : Split < ' a , char , Box < dyn FnMut ( & char ) -> bool > > ,
3214 back : RSplit < ' a , char , Box < dyn FnMut ( & char ) -> bool > > ,
3315}
@@ -51,13 +33,12 @@ impl<'a> DoubleEndedIterator for ChunkLinesIter<'a> {
5133#[ cfg( test) ]
5234mod tests {
5335
54- use chunks :: Chunk ;
36+ use super :: lines_iter ;
5537
5638 #[ test]
5739 fn test_chunk_lines_iter ( ) {
5840 let data: Vec < char > = "line1\n line2\n line3\n " . chars ( ) . collect ( ) ;
59- let chunk = Chunk :: from_disk ( 0 , & data) ;
60- let mut iter = chunk. lines_iter ( ) ;
41+ let mut iter = lines_iter ( & data) ;
6142
6243 assert_eq ! (
6344 iter. next( ) . unwrap( ) . chars_iter( ) . collect:: <String >( ) ,
@@ -79,8 +60,7 @@ mod tests {
7960 #[ test]
8061 fn test_chunk_lines_iter_empty ( ) {
8162 let data: Vec < char > = "" . chars ( ) . collect ( ) ;
82- let chunk = Chunk :: from_disk ( 0 , & data) ;
83- let mut iter = chunk. lines_iter ( ) ;
63+ let mut iter = lines_iter ( & data) ;
8464
8565 assert_eq ! ( iter. next( ) . unwrap( ) . chars_iter( ) . collect:: <String >( ) , "" ) ;
8666 assert ! ( iter. next( ) . is_none( ) ) ;
@@ -89,8 +69,7 @@ mod tests {
8969 #[ test]
9070 fn test_chunk_lines_iter_no_newline ( ) {
9171 let data: Vec < char > = "line1" . chars ( ) . collect ( ) ;
92- let chunk = Chunk :: from_disk ( 0 , & data) ;
93- let mut iter = chunk. lines_iter ( ) ;
72+ let mut iter = lines_iter ( & data) ;
9473
9574 assert_eq ! (
9675 iter. next( ) . unwrap( ) . chars_iter( ) . collect:: <String >( ) ,
@@ -102,8 +81,7 @@ mod tests {
10281 #[ test]
10382 fn test_chunk_lines_iter_double_ended ( ) {
10483 let data: Vec < char > = "line1\n line2\n line3\n " . chars ( ) . collect ( ) ;
105- let chunk = Chunk :: from_disk ( 0 , & data) ;
106- let mut iter = chunk. lines_iter ( ) ;
84+ let mut iter = lines_iter ( & data) ;
10785
10886 assert_eq ! (
10987 iter. next_back( ) . unwrap( ) . chars_iter( ) . collect:: <String >( ) ,
0 commit comments