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

这两个缺一不可

相关推荐
山上三树6 小时前
Qt Widget介绍
开发语言·qt
indexsunny7 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的深度解析
java·spring boot·spring cloud·kafka·prometheus·security·microservices
ChoSeitaku7 小时前
NO.2|proto3语法|消息类型|通讯录|文件读取|enum类型
java·服务器·前端
weixin_387534227 小时前
Ownership - Rust Hardcore Head to Toe
开发语言·后端·算法·rust
庞轩px7 小时前
MinorGC的完整流程与复制算法深度解析
java·jvm·算法·性能优化
zhouping@7 小时前
JAVA学习笔记day06
java·笔记·学习
毕设源码-郭学长8 小时前
【开题答辩全过程】以 某某协会管理与展示平台为例,包含答辩的问题和答案
java
csdn_zhangchunfeng8 小时前
Qt之slots和Q_SLOTS的区别
开发语言·qt
计算机安禾8 小时前
【C语言程序设计】第35篇:文件的打开、关闭与读写操作
c语言·开发语言·c++·vscode·算法·visual studio code·visual studio
多云的夏天8 小时前
docker容器部署-windows-ubuntu
java·docker·容器