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

这两个缺一不可

相关推荐
Jinkxs2 分钟前
Java 部署:Jenkins Pipeline 构建 Java 项目(自动化)
java·spring boot
Jinkxs6 分钟前
Java 部署:滚动更新(K8s RollingUpdate 策略)
java·开发语言·kubernetes
a8a3027 分钟前
Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决
java·spring boot·logback
jfqqqqq12 分钟前
win11下intelliJ idea的shift + F6无效
java·ide·intellij-idea
xu_ws13 分钟前
Spring-ai项目-deepseek-7-Function Calling(智能客服)
java·人工智能·spring
会编程的李较瘦15 分钟前
【C语言程序设计学习】一、C语法基础
c语言·开发语言·学习
逝水如流年轻往返染尘26 分钟前
JAVA中的抽象类
java·开发语言
困死,根本不会32 分钟前
【C 语言】指针学习笔记:从底层原理到实战应用
c语言·开发语言·笔记·学习·算法
自动化和Linux1 小时前
C语言_scanf(),strlen(),size()的特性和各自的区别
c语言·开发语言
hx862271 小时前
Java MySQL 连接
java·mysql·adb