Trait ReadExt

Source
pub trait ReadExt: Read {
    // Provided method
    fn pipe(self, cmd: Cmd) -> Pipeline
       where Self: Sized + Send + 'static { ... }
}
Expand description

Extension trait for std::io::Read to enable fluent piping to commands.

This trait allows any Read-implementing type to be piped directly to commands, enabling intuitive method chaining for I/O operations.

§Examples

use scripty::*;
use std::fs::File;

// Pipe file contents through a command pipeline
let file = File::open("data.txt")?;
let result = file.pipe(cmd!("grep", "pattern"))
    .pipe(cmd!("sort"))
    .pipe(cmd!("uniq"))
    .output()?;

// Process large files efficiently with streaming
use std::io::BufReader;
let large_file = File::open("huge_dataset.txt")?;
let reader = BufReader::new(large_file);
reader.pipe(cmd!("awk", "{sum += $1} END {print sum}"))
    .run()?;

// Chain with existing pipeline methods
use std::io::Cursor;
let data = Cursor::new(b"line1\nline2\nline3\n");
data.pipe(cmd!("sort"))
    .pipe(cmd!("wc", "-l"))
    .output()?;

Provided Methods§

Source

fn pipe(self, cmd: Cmd) -> Pipeline
where Self: Sized + Send + 'static,

Pipe this reader’s data to a command’s stdin.

This method creates a pipeline where the reader’s data becomes the input for the specified command. The resulting Pipeline can be further chained with additional commands or executed with methods like run(), output(), or write_to().

§Type Requirements

The reader must be Send + 'static to support the pipeline’s threading model. This is automatically satisfied by most standard library types like File, BufReader, Cursor, etc.

§Examples
use scripty::*;
use std::fs::File;

// Basic piping
let file = File::open("input.txt")?;
file.pipe(cmd!("sort")).run()?;

// Get output
let file = File::open("numbers.txt")?;
let sum = file.pipe(cmd!("awk", "{sum += $1} END {print sum}"))
    .output()?;

// Chain multiple commands
let file = File::open("log.txt")?;
let errors = file.pipe(cmd!("grep", "ERROR"))
    .pipe(cmd!("wc", "-l"))
    .output()?;

Implementors§

Source§

impl<R: Read> ReadExt for R