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

这两个缺一不可

相关推荐
斑鸠喳喳1 分钟前
可重入锁 ReentrantLock
java·源码
IT枫斗者枫哥2 分钟前
Spring AI 聊天记忆落库:重启后,怎样接上上一轮对话
java
devpotato3 分钟前
HashMap 扩容机制:从源码细节到工程实践
java
yueping23 分钟前
如何用idea打开jar包
java
IT_Octopus6 分钟前
从一个应用开发者的角度,搞懂大数据查询的完整链路
java·大数据·数据库
许彰午13 分钟前
51-BpmnDesigner集成
java·低代码·架构
蜗牛互联网13 分钟前
Claude放宽生命科学限制:代价是验证、分级和30天留存
java·人工智能·后端
shmily麻瓜小菜鸡19 分钟前
TDD(测试驱动开发)详解
开发语言·javascript·typescript·node.js·ecmascript
泡海椒32 分钟前
评分系统最佳实践:JQuick-Java实现权重、阈值动态配置评分
java·人工智能·python
三克的油33 分钟前
java-学习1
java·开发语言·学习