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}")

这两个缺一不可

相关推荐
天空'之城5 分钟前
Linux 系统编程 10:线程同步
linux·开发语言·系统编程·线程同步
Vect__7 分钟前
Go 数据结构 slice 深度剖析
开发语言·数据结构·golang
想你依然心痛9 分钟前
AtomCode在Python数据科学项目中的使用体验:从数据分析到可视化
开发语言·python·数据分析
我是个假程序员10 分钟前
实例化动作脚本类,并执行,执行类似N_F1_SAVE.java这种
java·nc
满天星830357711 分钟前
【Qt】控件(二) (geometry及与frameGeometry的区别)
开发语言·qt
青山木21 分钟前
Hot 100 --- LRU 缓存
java·数据结构·算法·leetcode·链表·缓存·哈希
花生了什么事o23 分钟前
Java 线程池:从参数到拒绝策略
java·jvm
Esaka_Forever32 分钟前
Python 与 JS (V8) 垃圾回收核心区别 + 底层根源分析
开发语言·javascript·jvm
长孙豪翔34 分钟前
引发事件的问题
java·linux·数据库
happyprince36 分钟前
09-vLLM KV Cache 系统完整分析
java·spring·vllm