Crate ubend[−][src]
UBend
This is a small crate that lets you build pipe chains between spawned processes using a syntax similar to the Unix shell.
let output = ubend!( cat <"./tests/input.txt" | grep "spam" | wc "-l" ).expect("spawn failed"). output(). expect("reading output failed"). stdout; let output = String::from_utf8(output). expect("UTF-8 error"). trim(). parse::<i64>(). unwrap(); println!("output: {}", output);
Note that arguments to commands need always to be quoted. If you don't quote
them they are interpreted as Rust identifiers which allows you to pass
dynamic strings. Also FOO="bar" cat <"baz"
is the same as
FOO = "bar" cat < "baz"
, since whitespace is ignored in Rust.
use ubend::IntoPipeSetup
is needed when passing a file name or
std::fs::File
as redirection source/target.
Note: Currently only Linux ist tested. Other Unix operating systems might work, too. Windows support is not implemented.
More Examples
use ubend::PipeSetup::*; // Ignore stderr ubend!(rm "no_such_file" 2>Null); // Redirect stderr to stdout ubend!(rm "no_such_file" 2>&1); // Write stderr to stderr of this process ubend!(rm "no_such_file" 2>Inherit); // Read from a file opened in Rust let file = File::open("./tests/input.txt"). expect("couldn't open file"); ubend!(grep "spam" <file); // Write stderr to a temp file let mut chain = ubend!(rm "no_such_file" 2>Temp). expect("spawn failed"); chain.wait_last(). expect("wait failed"); let mut temp = chain.stderr().unwrap(); // Since the file descriptor was shared with the spawned process the // position needs to be reset manually: temp.seek(SeekFrom::Start(0)). expect("seek failed");
Macros
ubend |
Create a pipe chain using a Unix shell like syntax. |
Structs
Chain |
Represents a pipe chain. |
Child | |
Command |
Configuration of a child process. |
Output |
Output and exit status of the last process in the chain. |
Enums
Error | |
KillError | |
Mode |
File open mode. Used with [PipeSetup]. |
OutputError | |
PipeSetup |
Setup a pipe. |
Target |
Redirection target. Used with [PipeSetup]. |
WaitError |
Traits
IntoPipeSetup |
Type Definitions
Result | |
WaitResult |