Skip to content

Rust crate allowing reading files inside a directory line-by-line, one file after the other (in human-alphabetical order). dir_lines_streamer is a ServiceNow Research project that was started at Element AI.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

ServiceNow/dir_lines_streamer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ServiceNow completed its acquisition of Element AI on January 8, 2021. All references to Element AI in the materials that are part of this project should refer to ServiceNow.

dir_lines_streamer

dir_lines_streamer is a Rust crate allowing reading files inside a directory line-by-line, one file after the other (in human-alphabetical order).

# Cargo.toml
[dependencies]
dir_lines_streamer = "0.1"

Example

Let's say you have a directory containing files split by logrotate that you want to read line-by-line:

ls fixtures/non-empty-dir/
messages        messages.1      messages.10     messages.2      messages.20

Note how the alphabetical ordering sorts messages.10 before messages.2.

This crate allows creating a structure that implements the trait Iterator<Item = String> which returns the lines of the files.

use failure; // Crate failure 0.1
use dir_lines_streamer::DirectoryLinesStreamer;

let streamer_result: Result<DirectoryLinesStreamer, failure::Error> = DirectoryLinesStreamer::from_dir("fixtures/non-empty-dir");

// Read all lines of all files inside the directory and store them in a Vec<String>
let lines: Vec<String> = streamer.collect();

println!("lines: {:#?}", lines);

This will print:

lines: [
    "line one from messages\n",
    "line two from messages\n",
    "line three from messages\n",
    "line one from messages.1\n",
    "line two from messages.1\n",
    "line three from messages.1\n",
    "line one from messages.2\n",
    "line two from messages.2\n",
    "line three from messages.2\n",
    "line one from messages.10\n",
    "line two from messages.10\n",
    "line three from messages.10\n",
    "line one from messages.20\n",
    "line two from messages.20\n",
    "line three from messages.20\n"
]

License

Licensed under either of

at your option.

Copyright (c) Element AI Inc., 2018, by Nicolas Bigaouette. All rights reserved.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Rust crate allowing reading files inside a directory line-by-line, one file after the other (in human-alphabetical order). dir_lines_streamer is a ServiceNow Research project that was started at Element AI.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published