rsocket / rsocket-rust

RSocket Rust Implementation using Tokio
Apache License 2.0
199 stars 20 forks source link

thiserror & anyhow #18

Closed linux-china closed 3 years ago

linux-china commented 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>> 这样的代码稍微难阅读一些。

use thiserror::Error;

#[derive(Error, Debug)]
#[error("RS-{code:#010x}: {msg}")]
pub struct RSocketError {
    code: u32,
    msg: String,
}

目前可能还是用struct表示RSocket Error合适一些。

jjeffcaii commented 3 years ago

Thanks! 我研究下~