Closed linux-china closed 3 years ago
Rust的错误处理中,anyhow和thiserror搭配还是不错的,anyhow::Error 可以作为Root error,然后通过thiserror::Error进行RSocketError enum进行扩展,当然同时可以使用 anyhow::Result<T>,这种方式会让错误处理更清晰些。 Deno在最新的1.4.1版本,也使用了anyhow::Error 进行错误处理。 async fn main() -> Result<(), Box<dyn Error + Send + Sync>> 这样的代码稍微难阅读一些。
anyhow::Error
thiserror::Error
anyhow::Result<T>
async fn main() -> Result<(), Box<dyn Error + Send + Sync>>
use thiserror::Error; #[derive(Error, Debug)] #[error("RS-{code:#010x}: {msg}")] pub struct RSocketError { code: u32, msg: String, }
目前可能还是用struct表示RSocket Error合适一些。
Thanks! 我研究下~
Rust的错误处理中,anyhow和thiserror搭配还是不错的,
anyhow::Error
可以作为Root error,然后通过thiserror::Error
进行RSocketError enum进行扩展,当然同时可以使用anyhow::Result<T>
,这种方式会让错误处理更清晰些。 Deno在最新的1.4.1版本,也使用了anyhow::Error 进行错误处理。async fn main() -> Result<(), Box<dyn Error + Send + Sync>>
这样的代码稍微难阅读一些。目前可能还是用struct表示RSocket Error合适一些。