File tree Expand file tree Collapse file tree 2 files changed +36
-0
lines changed
Expand file tree Collapse file tree 2 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -4,7 +4,9 @@ version = "0.1.0"
44edition = " 2021"
55
66[dependencies ]
7+ bytesize = { version = " ^1.1" , optional = true }
78deepsize = { version = " ^0.2" , optional = true }
9+ env_logger = { version = " ^0.9" , optional = true }
810log = " 0.4"
911rayon = " ^1.5"
1012rmp-serde = " ^0.15"
@@ -17,3 +19,7 @@ rand = "^0.8"
1719
1820[features ]
1921memory-limit = [" deepsize" ]
22+
23+ [[example ]]
24+ name = " quickstart"
25+ required-features = [" bytesize" , " env_logger" ]
Original file line number Diff line number Diff line change 1+ use std:: fs;
2+ use std:: io:: { self , prelude:: * } ;
3+ use std:: path;
4+
5+ use bytesize:: MB ;
6+ use env_logger;
7+ use log;
8+
9+ use ext_sort:: buffer:: mem:: MemoryLimitedBufferBuilder ;
10+ use ext_sort:: { ExternalSorter , ExternalSorterBuilder } ;
11+
12+ fn main ( ) {
13+ env_logger:: Builder :: new ( ) . filter_level ( log:: LevelFilter :: Debug ) . init ( ) ;
14+
15+ let input_reader = io:: BufReader :: new ( fs:: File :: open ( "input.txt" ) . unwrap ( ) ) ;
16+ let mut output_writer = io:: BufWriter :: new ( fs:: File :: create ( "output.txt" ) . unwrap ( ) ) ;
17+
18+ let sorter: ExternalSorter < String , MemoryLimitedBufferBuilder > = ExternalSorterBuilder :: new ( )
19+ . with_tmp_dir ( path:: Path :: new ( "tmp" ) )
20+ . with_buffer ( MemoryLimitedBufferBuilder :: new ( 50 * MB ) )
21+ . build ( )
22+ . unwrap ( ) ;
23+
24+ let sorted = sorter. sort ( input_reader. lines ( ) ) . unwrap ( ) ;
25+
26+ for item in sorted. map ( Result :: unwrap) {
27+ output_writer. write_all ( format ! ( "{}\n " , item) . as_bytes ( ) ) . unwrap ( ) ;
28+ }
29+ output_writer. flush ( ) . unwrap ( ) ;
30+ }
You can’t perform that action at this time.
0 commit comments