大佬们, 这样的两个函数可以合并成一个吗?
pub fn rs_error (e: &str) -> DaMieError {
DaMieError::RunSomethingError(String::from(e))
}
pub fn rs_error_s(s: String) -> DaMieError{
DaMieError::RunSomethingError(s)
}
1
共 4 条评论, 1 页
评论区
写评论这是另一种解决方法:把 &str 和 String 统一成
Cow<'_, str>
类型:但是,一般不对含生命周期参数的类型实现 Error trait。
比如
anyhow::Error
的很多方法都要求'static
,如果你定义的 Error type 有显示生命周期'a
,这意味着它就无法让调用者在使用anyhow
这样流行的错误处理库时,把 DaMieError 转成统一的 anyhow::Error 类型。--
👇
laris: From &str to Cow
From &str to Cow
赞! 大佬太强了就是这样 感谢
--
👇
苦瓜小仔: ```RUST fn rs_error(s: impl Into) -> DaMieError{ DaMieError::RunSomethingError(s.into()) }
enum DaMieError{RunSomethingError(String)}
fn main() { rs_error("e"); rs_error(String::from("e")); }