Normally the Rust standard library code sets SIGPIPE to SIG_IGN before your fn main() runs. This makes you see an error if you pipe your output to something like head:
fn main() {
loop {
println!("hello world");
}
}$ ./main | head
hello world
thread 'main' panicked at 'failed printing to stdout: Broken pipe (os error 32)', library/std/src/io/stdio.rs:1016:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtracAdd the following to your Cargo.toml to keep SIGPIPE as SIG_DFL so your program is nicely killed instead of panicking:
[dependencies]
sigpipe-default = "0.1.0"$ ./main | head
hello worldFollow rust-lang/rust#150588 for updates.