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

这两个缺一不可

相关推荐
@小码农9 小时前
2026年3月Scratch图形化编程等级考试一级真题试卷
开发语言·数据结构·c++·算法
这儿有一堆花9 小时前
住宅代理(Residential Proxy)技术指南
开发语言·数据库·php
one_love_zfl9 小时前
java面试-微服务组件篇
java·微服务·面试
一只大袋鼠10 小时前
Java进阶:CGLIB动态代理解析
java·开发语言
秦ぅ时10 小时前
保姆级教程|OpenAI tts-1-hd模型调用全流程(Python+curl+懒人用法)
开发语言·python
Eiceblue10 小时前
使用 C# 将 Excel 转换为 Markdown 表格(含批量转换示例)
开发语言·c#·excel
环流_10 小时前
HTTP 协议的基本格式
java·网络协议·http
爱滑雪的码农10 小时前
Java基础十三:Java中的继承、重写(Override)与重载(Overload)详解
java·开发语言
Java面试题总结10 小时前
使用 Python 设置 Excel 数据验证
开发语言·python·excel
【 】42310 小时前
C++&STL(Standard Template Library,标准模板库)
java·开发语言·c++