//@ run-pass //@ needs-threads //@ needs-unwind #![feature(internal_output_capture)] use std::sync::{Arc, Mutex}; use std::{io, str, thread}; fn main() { let data = Arc::new(Mutex::new(Vec::new())); let res = thread::Builder::new() .spawn({ let data = data.clone(); move || { io::set_output_capture(Some(data)); panic!("Hello, world!") } }) .unwrap() .join(); assert!(res.is_err()); let output = data.lock().unwrap(); let output = str::from_utf8(&output).unwrap(); assert!(output.contains("Hello, world!")); }