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

这两个缺一不可

相关推荐
漫漫求2 分钟前
Java内存模型【JMM】、JVM内存模型
java·开发语言·jvm
原来是好奇心2 分钟前
深入Spring Boot源码(五):外部化配置与Profile机制深度解析
java·源码·springboot
IT界的奇葩2 分钟前
OAuth2 单点登录流程图
java·流程图·oauth2·单点登录·sso
田姐姐tmner7 分钟前
Python 全面语法指南
开发语言·python
white-persist16 分钟前
【攻防世界】reverse | simple-check-100 详细题解 WP
c语言·开发语言·汇编·数据结构·c++·python·算法
wuguan_21 分钟前
C#中的静态成员、常量和只读变量
开发语言·c#
张人玉23 分钟前
C# 与西门子 PLC 通信:地址相关核心知识点
开发语言·microsoft·c#·plc
Gomiko34 分钟前
JavaScript DOM 原生部分(五):事件绑定
开发语言·前端·javascript
lly20240639 分钟前
Redis 发布订阅
开发语言
A0_張張41 分钟前
记录一个PDF盖章工具(PyQt5 + PyMuPDF)
开发语言·python·qt·pdf