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