1 pub struct StdioUtils; 2 3 impl StdioUtils { 4 /// # 将标准错误输出转换为行列表 5 pub fn stderr_to_lines(stderr: &[u8]) -> Vec<String> { 6 let stderr = String::from_utf8_lossy(stderr); 7 return stderr.lines().map(|s| s.to_string()).collect(); 8 } 9 10 /// 获取标准错误输出的最后n行, 以字符串形式返回. 11 /// 如果标准错误输出的行数小于n, 则返回所有行. 12 pub fn tail_n_str(lines: Vec<String>, n: usize) -> String { 13 let mut result = String::new(); 14 let start = if lines.len() > n { lines.len() - n } else { 0 }; 15 for line in lines.iter().skip(start) { 16 result.push_str(line); 17 result.push_str("\n"); 18 } 19 return result; 20 } 21 } 22