ccutils::cmd::IsOk 处理 Command 的结果和输出
Signed-off-by: Jia Chao <jiac13@chinaunicom.cn>
This commit is contained in:
parent
edfeda766e
commit
0d56cda3b3
37
src/cmd.rs
Normal file
37
src/cmd.rs
Normal file
|
@ -0,0 +1,37 @@
|
|||
// 定义一个名为 IsOk 的 trait
|
||||
// 该 trait 包含两个方法:is_ok 和 result
|
||||
pub trait IsOk {
|
||||
// is_ok 方法用于检查操作是否成功,如果成功则返回 Ok(()),
|
||||
// 否则返回包含错误信息的 Err。
|
||||
fn is_ok(self) -> crate::Result<()>;
|
||||
|
||||
// result 方法用于返回操作的结果字符串,
|
||||
// 如果操作成功则返回包含输出的 Ok(String),
|
||||
// 否则返回包含错误信息的 Err(String)。
|
||||
fn result(self) -> crate::Result<String>;
|
||||
}
|
||||
|
||||
// 为 std::process::Output 实现 IsOk trait
|
||||
impl IsOk for std::process::Output {
|
||||
// is_ok 方法的实现
|
||||
fn is_ok(self) -> crate::Result<()> {
|
||||
// 如果命令执行成功(status 为成功),返回 Ok(())
|
||||
if self.status.success() {
|
||||
Ok(())
|
||||
} else {
|
||||
// 否则将标准错误输出转化为 String 并返回 Err(String)
|
||||
Err(String::from_utf8(self.stderr).unwrap().into())
|
||||
}
|
||||
}
|
||||
|
||||
// result 方法的实现
|
||||
fn result(self) -> crate::Result<String> {
|
||||
// 如果命令执行成功,返回标准输出的字符串形式 Ok(String)
|
||||
if self.status.success() {
|
||||
String::from_utf8(self.stdout).map_err(|e| e.into())
|
||||
} else {
|
||||
// 否则返回标准错误输出的字符串形式 Err(String)
|
||||
Err(String::from_utf8(self.stderr).unwrap().into())
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,9 @@
|
|||
use tokio::runtime::Runtime;
|
||||
use tracing_subscriber::{fmt, EnvFilter};
|
||||
|
||||
/// linux 下的 cmd 命令执行处理函数
|
||||
pub mod cmd;
|
||||
|
||||
/// 放置了一些基础的函数集合
|
||||
pub mod util;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user