rust中的thiserror详细理解

复制代码
use anyhow::{bail, Context, Error, Result};
use std::{boxed, fs};
use std::io::Read;
use thiserror::Error;

// #[derive(Clone, Debug, Eq, Error, PartialEq)]
// #[error("Found no username in {0}")]
#[derive(Debug,Error)]
#[error("Found no username in {0}")]
struct EmptyUsernameError(String);

fn read_username(path: &str) ->Box<dyn std::error::Error>{

        return Box::new(EmptyUsernameError(path.to_string()));

}

fn main() {
    //fs::write("config.dat", "").unwrap();
    println!("{:?}", read_username("config.dat")) ;
}

结合https://docs.rs/thiserror/latest/thiserror/ 一起看。

#[derive(Debug,Error)] #[error("Found no username in {0}")]

这两个缺一不可

相关推荐
看海天一色听风起雨落15 小时前
Python学习之装饰器
开发语言·python·学习
cyforkk15 小时前
Spring 异常处理器:从混乱到有序,优雅处理所有异常
java·后端·spring·mvc
Want59515 小时前
C/C++圣诞树①
c语言·开发语言·c++
生擒小朵拉16 小时前
STM32添加库函数
java·javascript·stm32
Z_z在努力16 小时前
【杂类】Spring 自动装配原理
java·spring·mybatis
老赵的博客16 小时前
c++ 杂记
开发语言·c++
jimmy.hua16 小时前
[C++刷怪笼]:set/map--优质且易操作的容器
开发语言·c++
小小菜鸡ing16 小时前
pymysql
java·服务器·数据库
getapi16 小时前
shareId 的产生与传递链路
java
w2sfot17 小时前
Passing Arguments as an Object in JavaScript
开发语言·javascript·ecmascript